die folgende Bash-Skript nehmen:
#!/bin/bash
ls /sdfg
if [ $? -gt 0 ]
then
echo "Command failed: $?"
else
echo "Command succeeded: $?"
fi
Der Ausgang wird sein:
ls: cannot access /sdfg: No such file or directory
Command failed: 0
Die gescheiterte Befehl ls die tatsächlich den Wert 2, wenn Anweisung Fänge dieses, und echo Befehl gescheitert, aber warum tut $? auf Null gebracht werden? Es sieht so aus, als ob die if/then Zeilen als neuer Befehl behandelt werden.
'[' ist ein Befehl ("Test" genannt) – Mat