如何在命令行中声明包含 "or" 的条件?

How do I declare a conditional that includes "or" on the command line?

我正在尝试在命令行上编写一个需要两个条件的 if/then 语句。我似乎无法正确使用语法。我试过:

if [ "$var1" == "value1" || "$var2" == "value2"]; 
if [ "$var1" == "value1"] || ["$var2" == "value2"]; 
if [[ "$var1" == "value1" || "$var2" == "value2"]]; 

所有 return 个错误。我知道这是一个基本问题,但我对命令行脚本编写还是很陌生。欢迎任何帮助。

if [ "$var1" == "value1" || "$var2" == "value2"]; 

没有。 [ 不支持 || 运算符。

if [ "$var1" == "value1"] || ["$var2" == "value2"]; 

差不多。使用 =,而不是 ==[,因为 POSIX 没有定义 ==。不过有些 shell 可能支持它作为扩展。错误不包括 space 结束前的 ].

if [[ "$var1" == "value1" || "$var2" == "value2"]]; 

是的,但是和上面一样的错误。在结束 ]] 之前,您需要一个 space。正确的行是

之一
if [ "$var1" = "value1" ] || [ "$var2" = "value2" ];
if [[ "$var1" == "value1" || "$var2" == "value2" ]];

test 命令([ ... ] 语法)支持 -o 运算符来评估逻辑或条件:

if [ "$var1" = "value1" -o "$var2" = "value2" ] ; then
    echo match
else
    echo fail
fi