我正在尝试使用三个表达式创建一个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" ]
答案 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"
,这表明已经采用了当时的分支。