Using the && operator in an if statement

236,391

So to make your expression work, changing && for -a will do the trick.

It is correct like this:

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

or like

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

or even

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

You can find further details in this question bash : Multiple Unary operators in if statement and some references given there like What is the difference between test, [ and [[ ?.

Share:
236,391
Ziyaddin Sadigov
Author by

Ziyaddin Sadigov

Updated on July 08, 2022

Comments

  • Ziyaddin Sadigov
    Ziyaddin Sadigov almost 2 years

    I have three variables:

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

    How to use and (&&) operator in if statement like this:

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

    When I write this code it gives error. What is the right way?

  • Adrian Frühwirth
    Adrian Frühwirth almost 11 years
    Note that POSIX recommends the use of && and || with the single bracket notation over -a and -o, so if you are writing portable code go for the first notation, otherwise the second and skip the third, especially since it can get awkward and hard to read if you need to group expressions.