我正在尝试创建带有三个表达式的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
就像您可能预期的那样,这表明当时的分支已被拍摄。