如果在shell中带有3个表达式的语句



我正在尝试创建带有三个表达式的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" ]

之前起作用。

您的条件很好。问题在于您的作业。

这个:

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

不会将/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",它会说/a/b/d 9.3就像您可能预期的那样,这表明当时的分支已被拍摄。

相关内容

  • 没有找到相关文章

最新更新