Fórum Root.cz
Hlavní témata => Software => Téma založeno: Ahmul 23. 11. 2010, 19:41:07
-
Zdravím široké obecenstvo. Poslední dobou se trápím s otázkou, odkud se berou podobné prapodivné testy:
[ "x$PROMENNA" = "xobsah" ] && ...Shell by měl přeci brát prázdný řetězec "" jako zvláštní argument. Ve všech případech by tedy mělo stačit toto
[ "$PROMENNA" = "obsah" ] && ...V případě, že se $PROMENNA vyexpanduje na prázdný řetězec, pak argumenty pro příkaz test budou vypadat následovně
arg0 = "["
arg1 = ""
arg2 = "="
arg3 = "obsah"
arg4 = "]"Testoval jsem už několik shellů jestli se náhodou nejedná o compatibility issue (dash, ksh, csh) a všechny se chovají správně. Napadlo mě také, že by se mohlo jednat o přehnanou snahu méně zkušených shell programátorů udělat skript bezpečnější, ale na podobný syntax jsem narazil i v některých systémových skriptech v debianu.
Tedy otázka zní: proč by měla být druhá forma špatná, nebo proč je možné občas zahlédnou první formu, prestože je přinejmenším ošklivější?
-
Ja osobne se ridim heslem: Nevynalezej co uz predemnou mnoho lidi pouzilo bez problemu. Ikdyz spousta veci nema na prvni podhled jasny duvod, nejaky hacek tam je vzdy zza nejakych podminek zaklubany :) Vice info treba na: http://stackoverflow.com/questions/174119/why-do-shell-script-comparisons-often-use-xvar-xyes (http://stackoverflow.com/questions/174119/why-do-shell-script-comparisons-often-use-xvar-xyes)
-
O compatibility issue na styl dash, ksh, csh sa urcite jednat nebude, lebo to nemusi byt vec shellu, skor by som testoval viac verzii programu test.
Pri implementacii programu test (ktora by nebola podla Unix specifikacie), ktora najskor skusa vyhodnotit prvy argument by sa mohlo stat, ze PREMENNA=-n a podmienka by davala zle vysledky / pisala o chybach.
-
ooo, osvícení:) díky za nakopnutí:)