bash,如何使用OR || If语句中的运算符?

问题描述:

谁能告诉我什么是错的语法如下:bash,如何使用OR || If语句中的运算符?

if [ "$1" == "postfix" || "$1" == "all" ]; then 
    echo test 
fi 
+1

'[a == b] || [c == d]'或'[a == b -o c == d]'。或者'[[...]]'而不是。 – Kevin 2014-12-03 23:56:16

二者必选其一

if [ "$1" = "postfix" ] || [ "$1" = "all" ]; then 

if [ "$1" = "postfix" -o "$1" = "all" ]; then 

||结合了两个命令(和[是一个命令)。在[ ... ]内,运营商-o用于

另一种使用||的方法是在[[而不是[内部使用它。

以任何方式,[ ...... ]之内的等于的正确运算符为=,因为它是POSIX标准(根据man bash)。虽然支持==

如果你想这样做,使用[[测试形式:

if [[ $1 == "postfix" || $1 == "all" ]; then 

[[是类似(但更强大的一个bash关键字比)[命令。见http://mywiki.wooledge.org/BashFAQ/031http://mywiki.wooledge.org/BashGuide/TestsAndConditionals除非你正在编写POSIX SH,我们建议[[

if [ "$1" == "postfix" ] || [ "$1" == "all" ]; then 
+0

我的回答没有太大差别,所以+ +从我;-) – Alfe 2014-12-04 00:02:11