Beachten Sie, dass für PIPE
jeden 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 grep
bei 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 -l
nur darauf geachtet wird, dass die Datei mindestens eine Übereinstimmung aufweist (sodass diese grep
zurü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)