Fórum Root.cz

Hlavní témata => Software => Téma založeno: Ahmul 23. 11. 2010, 19:41:07

Název: Expanze řádky v shellu
Přispěvatel: 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:
Kód: [Vybrat]
[ "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
Kód: [Vybrat]
[ "$PROMENNA" = "obsah" ] && ...V případě, že se $PROMENNA vyexpanduje na prázdný řetězec, pak argumenty pro příkaz test budou vypadat následovně
Kód: [Vybrat]
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ší?
Název: Re: Expanze řádky v shellu
Přispěvatel: maestrx 23. 11. 2010, 21:01:26
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)
Název: Re: Expanze řádky v shellu
Přispěvatel: branchman2 23. 11. 2010, 21:08:53
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
Kód: [Vybrat]
PREMENNA=-n a podmienka by davala zle vysledky / pisala o chybach.
Název: Re: Expanze řádky v shellu
Přispěvatel: Ahmul 24. 11. 2010, 19:05:27
ooo, osvícení:) díky za nakopnutí:)