Wenn unser Server hochfährt, müssen wir eine Datei überprüfen, um festzustellen, wie der Server konfiguriert ist.
Wir möchten in unserer Datei /etc/aws/hosts.conf nach der folgenden Zeichenfolge suchen:
MYSQL_ROLE=master
Anschließend möchten wir testen, ob diese Zeichenfolge vorhanden ist, und mithilfe einer if / else-Anweisung eine von zwei Optionen ausführen, je nachdem, ob die Zeichenfolge vorhanden ist oder nicht.
Wie lautet die BASH-Syntax für die if-Anweisung?
if [ ????? ]; then
#do one thing
else
#do another thing
fi
if
Nimmt einen Befehl und überprüft seinen Rückgabewert.[
ist nur ein Befehl.quelle
Beachten Sie, dass für
PIPE
jeden Befehl oder jede Befehlsfolge Folgendes gilt:Für die Aufzeichnung
[ expr ]
ist eine Shell in † Kurzform für gebauttest 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:Beachten Sie, dass bei der Verwendung
-l
nur darauf geachtet wird, dass die Datei mindestens eine Übereinstimmung aufweist (sodass diesegrep
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)quelle
-l
ist überflüssig,grep
kehrt sofort zurück, wenn eine Übereinstimmung mit-q
benutze einfach bash
quelle