Bash 语句中的 3 个或条件
3 OR Conditions in Bash Statement
我认为这很简单,但我总是出错。我想在我的 if else 语句中使用 3 个 OR 条件。这些是我尝试过的变体。我犯了什么语法错误?
if [[ $var == "a" ]] || [[ $var == "b" ]] || [[ $var == "c" ]]; then
#Do Stuff
else
#Do Stuff
fi
if [ $var == "a" ] || [ $var == "b" ] || [ $var == "c" ]; then
#Do Stuff
else
#Do Stuff
fi
if [[ $var == "a" ] || [ $var == "b" ]] || [ $var == "c" ]; then
#Do Stuff
else
#Do Stuff
fi
if [[ $var == "a" || $var == "b" || $var == "c" ]]; then
#Do Stuff
else
#Do Stuff
fi
第一个和最后一个版本在我看来和行为上都是正确的。您确定您使用的是 bash
而不是 sh
吗?
请注意,[
和 [[
都是“命令”(实际上是内置命令,我认为这是一个恰当的术语)并且略有不同。基本上你想使用 [[
除非你想要与旧 shell 的遗留兼容性。如果使用 [
还有其他注意事项,例如它可能会导致空字符串比较出现问题。
顺便说一句,第二个版本应该可以正常工作,但是你会遇到上面提到的问题 - 第三个版本不好。
我认为这很简单,但我总是出错。我想在我的 if else 语句中使用 3 个 OR 条件。这些是我尝试过的变体。我犯了什么语法错误?
if [[ $var == "a" ]] || [[ $var == "b" ]] || [[ $var == "c" ]]; then
#Do Stuff
else
#Do Stuff
fi
if [ $var == "a" ] || [ $var == "b" ] || [ $var == "c" ]; then
#Do Stuff
else
#Do Stuff
fi
if [[ $var == "a" ] || [ $var == "b" ]] || [ $var == "c" ]; then
#Do Stuff
else
#Do Stuff
fi
if [[ $var == "a" || $var == "b" || $var == "c" ]]; then
#Do Stuff
else
#Do Stuff
fi
第一个和最后一个版本在我看来和行为上都是正确的。您确定您使用的是 bash
而不是 sh
吗?
请注意,[
和 [[
都是“命令”(实际上是内置命令,我认为这是一个恰当的术语)并且略有不同。基本上你想使用 [[
除非你想要与旧 shell 的遗留兼容性。如果使用 [
还有其他注意事项,例如它可能会导致空字符串比较出现问题。
顺便说一句,第二个版本应该可以正常工作,但是你会遇到上面提到的问题 - 第三个版本不好。