Portál AbcLinuxu, 12. května 2025 10:35
*/10 * * * * /usr/local/bin/bash_script
Potrebuji dostat jednotlive polozky do promennych (minute, hour, day_of_week...) nebo do pole. Je to pro me mission impossible, bud se mi wildcard preklada na soubory v adresari nebo pokud se snazim retezec rozstrhat CUTem po mezerach, tak mi druhou a treti polozku vrati stejnou... Nejaky napad, jak toho docilit? Diky za napady
Řešení dotazu:
$(...)
je jiný zápis pro `...`
(který má mj. tu výhody, že lze vnářet.
Nejspíše jste měl na mysli:
POLE=(RADKA_CRONTABu)
ksh
ještě umí vtipný zápis:
set -A <pole> <obsah>Ale
bash
ne.
POLE=(*/6 * * * * /usr/local/bin/script /home/user/config/S2C.conf) echo ${POLE[0]} echo ${POLE[1]} echo ${POLE[2]}vypisuje:
*/6 afdfs.txt.msg archiv.ziphvezdicka je problem a nevim, jak to obejit
Zkuste uvozovky.
Marekcat /etc/crontab | grep \* | cut -f 4NN
sed -e 's#\([?*$]\)#\\\1#g'
.
No a pak je tady ještě otázka. Kam tím vším míříte, jestli by to třeba nebylo lepší celé to rovnou směřovat do awk
.
cat /etc/crontab | while read a b c d e f g h; do echo ="$a" ="$b" ="$c" ="$d" ="$e" ="$f" ="$g" ="$h" done
pole=(hodnota1 ... hodnotaN .... nebo_promenna)není to samé, co:
pole=("hodnota1 ... hodnotaN .... nebo_promenna")S tím druhým jsme si stran krájení pomocí
(...)
moc nepomohli. ;)
Jinak samozřejmě to, co píšete jako obecná poučka od věci není, akorát ještě s doplňkem, raději "${var}"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.