在if语句bash脚本中使用和(&&)运算符

Ziy*_*gov 74 syntax bash if-statement operators

我有三个变量:

VAR1="file1"
VAR2="file2"
VAR3="file3"
Run Code Online (Sandbox Code Playgroud)

如何&&在if语句中使用和()运算符如下:

if [ -f $VAR1 && -f $VAR2 && -f $VAR3 ]
   then ...
fi
Run Code Online (Sandbox Code Playgroud)

当我编写这段代码时,它会给出错误.什么是正确的方法?

fed*_*qui 153

因此,为了使你的表达工作,改变&&-a将这样的伎俩.

这是正确的:

 if [ -f $VAR1 ] && [ -f $VAR2 ] && [ -f $VAR3 ]
 then  ....
Run Code Online (Sandbox Code Playgroud)

或者喜欢

 if [[ -f $VAR1 && -f $VAR2 && -f $VAR3 ]]
 then  ....
Run Code Online (Sandbox Code Playgroud)

甚至

 if [ -f $VAR1 -a -f $VAR2 -a -f $VAR3 ]
 then  ....
Run Code Online (Sandbox Code Playgroud)

你可以在这个问题bash中找到更多的细节:if语句中的多个一元运算符和那里给出的一些参考例如test,[和[[?.

  • 请注意,[POSIX](http://pubs.opengroup.org/onlinepubs/000095399/utilities/test.html#tag_04_140_16)建议在`-a`上使用单括号表示``&&`和`||`和`-o`,所以如果你正在编写可移植代码,请使用第一种表示法,否则使用第二种表示法,跳过第三种表示法,特别是因为如果需要对表达式进行分组,它可能会变得难以阅读. (14认同)