[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 ifAnweisung führt einen Befehl aus und führt das thenTeil aus, wenn der Befehl erfolgreich ist, oder das elseTeil (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 testfür weitere Informationen.
Fußnote: Nun, der [Befehl entspricht fast dem testBefehl. Der Unterschied besteht darin, [dass dies ]als letztes Argument erforderlich ist und testnicht - und tatsächlich nicht zulässt (genauer gesagt, testbehandelt 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 '['