[
ist eigentlich ein Befehl, der dem Befehl entspricht (fast siehe unten) test
. Es ist nicht Teil der Shell-Syntax. (Beide [
und test
, abhängig von der Shell, sind häufig auch integrierte Befehle, aber das hat keinen Einfluss auf ihr Verhalten, außer vielleicht auf die Leistung.)
Eine if
Anweisung führt einen Befehl aus und führt das then
Teil aus, wenn der Befehl erfolgreich ist, oder das else
Teil (falls vorhanden), wenn es fehlschlägt. (Ein Befehl ist erfolgreich, wenn er mit einem Status ( $?
) von 0 beendet wird. Er schlägt fehl, wenn er mit einem Status ungleich Null beendet wird.)
Im
if [ "$name" = 'Bob' ]; then ...
Der Befehl lautet
[ "$name" = 'Bob' ]
(Sie können denselben Befehl direkt ausführen, ohne das if
.)
Im
if grep -q "$text" $file ; then ...
Der Befehl lautet
grep -q "$text" $file
man [
oder man test
für weitere Informationen.
Fußnote: Nun, der [
Befehl entspricht fast dem test
Befehl. Der Unterschied besteht darin, [
dass dies ]
als letztes Argument erforderlich ist und test
nicht - und tatsächlich nicht zulässt (genauer gesagt, test
behandelt ein ]
Argument nicht speziell; es könnte beispielsweise ein gültiger Dateiname sein). (Es dauerte nicht haben , um auf diese Weise umgesetzt werden, aber eine [
ohne passende ]
würde eine Menge Leute sehr , sehr nervös gemacht haben.)
help '['