2013-02-19 6 views
48

Ich möchte einige Gruppen von Bedingungen in einer Bash If-Anweisung haben. Insbesondere bin ich der Suche nach etwas wie folgt aus:Gruppen von zusammengesetzten Bedingungen in Bash-Test

if <myCondition1 and myCondition2> or <myCondition3 and myCondition4> then... 

Wie kann ich Gruppe die Bedingungen zusammen in der Art, wie ich für die Verwendung beschreiben mit einer if-Anweisung in Bash? Ich danke Ihnen für Ihre Anregungen.

+0

Ich tat, war aber nicht in der Lage, den Gruppierungstrick zu finden (und wusste nicht die Terminologie zu suchen, um es zu finden). Im Zweifelsfall fragen. Danke für den Link! – d3pd

+4

Ich bin mir nicht sicher, dass dies als ein Duplikat markiert sein sollte. Die Antwort auf diese Frage bezieht sich insbesondere auf Gruppierungsbedingungen, während die Antwort auf das Duplikat dies nicht tut. – JoBu1324

+0

Ich bin immer wieder erstaunt, wie leicht Fragen als Duplikate markiert werden können, wenn sie eindeutig nicht sind. In dieser Frage geht es um Gruppierungsbedingungen. Es gibt nichts in den Antworten dieser anderen Frage, die tatsächlich dieses beantwortet. – Calimo

Antwort

109

Verwenden Sie die & & (und) und || (Oder), Operatoren:

if [[ expression ]] && [[ expression ]] || [[ expression ]] ; then 

Sie können auch in einem einzigen [[]] verwendet werden:

if [[ expression && expression || expression ]] ; then 

Und schließlich können Sie gruppieren Reihenfolge der Auswertung zu gewährleisten:

if [[ expression && (expression || expression) ]] ; then 
+4

IMO das ist eine klarere Antwort als das "Duplikat". Im dritten Beispiel, stellen Sie sicher, doppelte Klammern zu verwenden - '[[]]' – JoBu1324

+1

Für diejenigen, die sich um die Kompatibilität mit anderen Shell-Typen kümmern, werde ich feststellen, dass die oben genannten scheint nicht mit einzelnen Klammern '[]' arbeiten . – SeldomNeedy

+5

Beachten Sie, dass im ersten Beispiel die '&&' und '||' die Pipelineoperatoren der Shell sind. Im zweiten und dritten Beispiel handelt es sich um Operatoren, die vom '[[...]]' Conditional Command Parser verarbeitet werden. Der erste arbeitet mit Exit-Werten von Null und nicht Null, der Rest arbeitet mit Rückgabewerten von True und False. Während alle Beispiele _work_, arbeiten sie aus verschiedenen Gründen. –

Verwandte Themen