如何声明在命令行中包含“或”的条件?

时间:2015-09-04 19:51:17

标签: bash if-statement command line

我正在尝试在命令行上编写一个带有两个条件的if / then语句。我似乎无法正确使用语法。我试过了:

if [ "$var1" == "value1" || "$var2" == "value2"]; 
if [ "$var1" == "value1"] || ["$var2" == "value2"]; 
if [[ "$var1" == "value1" || "$var2" == "value2"]]; 

所有返回错误。我知道这是一个基本问题,但我仍然是命令行脚本的新手。欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

if [ "$var1" == "value1" || "$var2" == "value2"]; 

没有。 [不支持||运营商。

if [ "$var1" == "value1"] || ["$var2" == "value2"]; 

几乎。因为POSIX没有定义=,所以使用==而不是[==。有些炮弹可能会支持它作为扩展。错误在结束]之前不包括空格。

if [[ "$var1" == "value1" || "$var2" == "value2"]]; 

是的,但错误与上述相同。在结束]]之前需要一个空格。

之一是正确的行
if [ "$var1" = "value1" ] || [ "$var2" = "value2" ];
if [[ "$var1" == "value1" || "$var2" == "value2" ]];

答案 1 :(得分:0)

test命令([ ... ]语法)支持-o运算符来评估逻辑或条件:

if [ "$var1" = "value1" -o "$var2" = "value2" ] ; then
    echo match
else
    echo fail
fi