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ší?