Using the && operator in an if statement
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?
Solution 1:
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 [[ ?.