Det har med portabilitet att göra. Oftast är det inte just
bash som har problem, utan det brukar snarare vara en del varianter av
/bin/sh som kan ställa till det, t.ex. den som följer med
solaris. Men det gäller i vissa speciella fall faktiskt även för
bash. Här har du ett exempel på när det kan bli fel:
Kod: Markera allt
XAUTHORITY=!
if [ "$XAUTHORITY" != "" ]
then
echo sant
else
echo falskt
fi
Alla moderna versioner av
bash svarar förstås med ordet
sant. Det gäller dock inte för riktigt gamla versioner från 90-talet där koden i else-delen körs istället eftersom du får ett felmeddelande i stil med
[: !=: unary operator expected.
Det är förstås föga troligt att variabeln
$XAUTHORITY är satt till ett utropstecken, men dock fullt möjligt.