Verwenden des Operators && in einer if-Anweisung

81

Ich habe drei Variablen:

VAR1="file1"
VAR2="file2"
VAR3="file3"

Verwendung und &&Operator ( ) in der if-Anweisung wie folgt:

if [ -f $VAR1 && -f $VAR2 && -f $VAR3 ]
   then ...
fi

Wenn ich diesen Code schreibe, gibt es einen Fehler. Was ist der richtige Weg?

Ziyaddin Sadigov
quelle

Antworten:

168

So zu Ihrem Ausdruck Arbeit zu machen, ändert &&für -aden Trick.

Es ist so richtig:

 if [ -f $VAR1 ] && [ -f $VAR2 ] && [ -f $VAR3 ]
 then  ....

oder wie

 if [[ -f $VAR1 && -f $VAR2 && -f $VAR3 ]]
 then  ....

oder auch

 if [ -f $VAR1 -a -f $VAR2 -a -f $VAR3 ]
 then  ....

Weitere Details finden Sie in dieser Frage- Bash: Mehrere unäre Operatoren in der if-Anweisung und einigen dort angegebenen Referenzen wie Was ist der Unterschied zwischen test, [und [[? .

fedorqui 'SO hör auf zu schaden'
quelle
14
Beachten Sie, dass POSIX die Verwendung von empfiehlt &&und ||mit der einzigen Klammer - Notation über -aund -o, also , wenn Sie portablen Code gehen für die erste Schreibweise schreiben, da sonst die zweiten und überspringt die dritten, vor allem , da es umständlich und schwer zu bekommen , wenn Sie lesen müssen Ausdrücke gruppieren.
Adrian Frühwirth