Beachten Sie, dass für PIPEjeden Befehl oder jede Befehlsfolge Folgendes gilt:
if PIPE ; then
# do one thing if PIPE returned with zero status ($?=0)
else
# do another thing if PIPE returned with non-zero status ($?!=0), e.g. error
fi
Für die Aufzeichnung [ expr ]ist eine Shell in † Kurzform für gebaut test expr.
Da grepbei einer Übereinstimmung der Status 0 und bei Nichtübereinstimmung der Status ungleich Null zurückgegeben wird, können Sie Folgendes verwenden:
if grep -lq '^MYSQL_ROLE=master' ; then
# do one thing
else
# do another thing
fi
Beachten Sie, dass bei der Verwendung -lnur darauf geachtet wird, dass die Datei mindestens eine Übereinstimmung aufweist (sodass diese grepzurückgegeben wird, sobald eine Übereinstimmung gefunden wird, ohne dass die Eingabedatei unnötig weiter analysiert werden muss).
† auf einigen Plattformen [ expr ]ist kein builtin, sondern eine tatsächliche ausführbare /bin/[(dessen letzte Argument sein wird ]), weshalb [ expr ]Zuschnitte um den eckigen Klammern enthalten sollte, und warum es durch befolgt werden müssen , eine der Befehlsliste Separatoren ( ;, &&, ||, |, &, Neue Zeile)