if语句在shell中有3个表达式

时间:2014-01-28 22:52:16

标签: linux bash shell if-statement

我正在尝试使用三个表达式创建一个if语句。这是我尝试但不起作用的地方:

if [ $a = $b -a $c -gt $d ] || [ $a = $f ];

使用上面的表达式,如果$a = $f它不执行if语句的主体。这可能吗?我尝试了不同的组合,似乎都没有。

编辑:

以下是我要求的完整示例:

a=9.3
c=9.3.0
q=/a/b/c/d ${a}
if [ "${a}" = "9.2" -a ${c:4:4} -ge 4 ] || [ "${a}" = "9.3" ]
then
    q=/a/b/d ${a}
fi

在我添加|| [ "${a}" = "9.3" ]

之前,这是有效的

1 个答案:

答案 0 :(得分:1)

你的条件没问题。问题出在你的作业上。

此:

a=9.3
q=/a/b/c/d ${a}

不会将[{1}}分配给变量/a/b/c/d 9.3

它将尝试运行名为q的命令并为其提供临时变量9.3

运行此脚本会导致两个错误q=/a/b/c/d。请不要忽略错误或意外输出。它们对于检测和诊断问题非常重要。

我不确切地知道你的意图是什么,但你可能意味着:

9.3: command not found

运行此代码后,您可以执行a=9.3 c=9.3.0 q="/a/b/c/d ${a}" if [ "${a}" = "9.2" -a ${c:4:4} -ge 4 ] || [ "${a}" = "9.3" ] then q="/a/b/d ${a}" fi ,它会像您预期的那样说echo "$q",这表明已经采用了当时的分支。