Die Bash-shell 'if' - Anweisung vergleichen der Ausgänge von verschiedenen Befehlen
Mit einem angepassten Beispiel gegeben, um mich von Sam Ruby, die ich haben gezwickt, damit ich zeigen kann was ich versuche zu erreichen.
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10)
if [$app1 = (someapptwo -flag | grep usefulstuff | cut -c 20-25)]; then
mkdir IPFolder-1
elif ...blah blah
fi
Kann ich mit grep-wie oben zeigen, oder bin ich auf dem Holzweg? oder sollte es so Aussehen ein wenig einem Ding wie diesem:
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10)
app2=$(someapptwo -flag | grep usefulstuff | cut -c 20-25)
if [$app1 = $app2]; then
mkdir IPFolder-1
elif ...blah blah
fi
Haben Sie bemerkt, dass Sam Ruby sagte: "Leerzeichen sind wichtig"?
InformationsquelleAutor bikerben | 2011-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zumindest in anderen shells zu werden, müssen Sie viel vorsichtiger mit Leerzeichen; die eckige Klammer ist ein name für den Befehl und muss getrennt vom vorhergehenden und folgenden Wörter. Sie müssen auch (wieder im klassischen Schalen für bestimmte) zum einbetten der Variablen in doppelten Anführungszeichen:
Könnte man es machen, alles in einer Zeile (na ja, zwei, weil ich vermeiden Sie die horizontale Bildlaufleiste, wenn möglich):
Oder könnte man es machen, mit zwei separaten Befehl erfasst:
Update:
Einige zusätzliche Zitate Hinzugefügt. Wäre es möglich, zitieren die Zuordnungen zu:
Kein Schaden gemacht werden würde; es ist nicht unbedingt notwendig, mit
bash
(es kann aber auch notwendig gewesen mit archaischen Bourne-shell).$(somecommand)
bits, zumindest in derif
Aussagen (es ist nicht notwendig, wenn die Zuordnung zu einer Variablen, aber ich Neige dazu, es zu tun, sowieso für die Konsistenz).Ich Neige dazu, zu zitieren; ich habe geißelte, weil es nicht immer notwendig, und ich bin versucht zu erhellen. Vielleicht sollte ich nicht stören. Ich hätte gerne Zugang zu einer echten Bourne-shell zu testen, mehr von dem, was ist die neue bash-Verhalten vs was ist das legacy-Verhalten. Ich werde das hinzufügen der Anführungszeichen - vielen Dank.
+1 Gute Antwort. Was meinst du mit classic shells?
Klassische Schalen umfassen würde, die System-V-Bourne-shell (und System III oder 7. Edition-Versionen), zum Beispiel, und möglicherweise auch die Korn-shell auch. Die Bash-Shell wäre eine moderne shell.
InformationsquelleAutor Jonathan Leffler
Finden Sie den Wert Ihrer expression durch voranstellen eines $:
InformationsquelleAutor milancurcic