RE: porovnání v .sh skriptu
Jan Pechanec
jp at devnull.cz
Sun Oct 31 19:47:13 CET 2004
On Sun, 31 Oct 2004, Cizek Milan wrote:
>> Momentalne nejsem u pocitace, ale osvedcilo se mi projistotu
>> vse uzavirat do uvozovek. A taky obcas pomaha sh -x
>> jmenoscriptu(ukaze to, co se vsechno deje,hlavne hodnoty
>> promenych). A co je promenna time? Nema to byt hour?
>
>Ahoj a diky. Uz jsem byl z toho tak zblblej, ze jsem tu hour proste nevidel.
>Jinak mi to chodi i bez uvozovek.
kolega Michal Hrusecky to spis myslel tak, ze kdyz to das do
uvozovek, tak te zniceho nic urcite neprekvapi tento kod:
[ -ge 8 -a -lt 22 ]
jehoz chybova hlaska je vic krypticka ([: -ge: unexpected operator)
nez kdyz se ti tam objevi:
[ "" -ge 8 -a "" -lt 22 ]
kde error hlaska je uz o neco lepsi ([: : bad number, v bashi pak
-su: [: : integer expression expected). I kdyz i pak te treba muze na 4.x
prekvapit chybka v jedne knihovni funkci (to uz je spis poznamka mimo, ale
nedavno me to slusne dostalo - pomoci podobne konstrukce jsem testoval zda
levy operand je nebo neni cislo):
sh -c '[ "" -eq 0 ]; [ $? -eq 2 ] && echo "not a number" || echo "number"'
Kazdopadne pri nenumerickych testech je pouzivani quotingu uz vic
duvodnejsi, tam je porovnani prazdneho stringu korektni. Jiny zpusob, ktery
se obcas da videt, je tento:
[ x$hour = x12 ]
driv jsem uvozovky ne vzdy pouzival (,,cha, vim presne jak to
funguje, uvozovky jsou zbytecny''). Bohuzel v te funkci o 300 radek jinde,
kde jsem vytvarel tu porovnavanou hodnotu, jsem zapomnel napsat komentar
,,bacha, o 300 radek dole jsem hrdej, takze si dej pozor, at to misto cisla
fakt neni prazdnej retezec''). Proste je dobry se chranit i pred sebou,
vsechny dny se zrovna nedari. Taky ne vzdy vis, jestli ti tam do tech
rezetezcu nejakej mimon neda treba ';' nebo '('.
p.
--
Jan Pechanec <jp (at) devnull (dot) cz>
More information about the Users-l
mailing list