использование оператора and (&&) в сценарии bash оператора if


у меня есть три переменные:

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

как использовать и (&&) оператор в операторе if следующим образом:

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

когда я пишу этот код дает ошибку. Что такое правильный путь?

1 52

1 ответ:

так чтобы сделать ваше выражение работы, изменение && на -a будет делать трюк.

это правильно так:

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

или как

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

или даже

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

вы можете найти более подробную информацию в этом вопросе bash: несколько унарных операторов в операторе if и некоторые ссылки, приведенные там, как в чем разница между тестом, [ и [[ ?.