我正在尝试在命令行上编写一个带有两个条件的if / then语句。我似乎无法正确使用语法。我试过了:
if [ "$var1" == "value1" || "$var2" == "value2"];
if [ "$var1" == "value1"] || ["$var2" == "value2"];
if [[ "$var1" == "value1" || "$var2" == "value2"]];
所有返回错误。我知道这是一个基本问题,但我仍然是命令行脚本的新手。欢迎任何帮助。
答案 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