Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Bash shell或';字符串的不一致比较失败_String_Bash - Fatal编程技术网

String Bash shell或';字符串的不一致比较失败

String Bash shell或';字符串的不一致比较失败,string,bash,String,Bash,这类似于我在谷歌上搜索的帖子,但我找不到确切的答案。我尝试将两个字符串或与另一个两字符串比较: elif [[ "$2" != "append" ]] || [[ "$2" != "replace" ]] 但即使键入了append或replace,测试也会失败。奇怪的是,一个简单的比较就能奏效: elif [[ "$2" != "append" ]] 因此,我知道问题出在或部分,但我无法解决问题。使用&而不是| elif [[ "$2" != "append" ]] && [

这类似于我在谷歌上搜索的帖子,但我找不到确切的答案。我尝试将两个字符串或与另一个两字符串比较:

elif [[ "$2" != "append" ]] || [[ "$2" != "replace" ]]
但即使键入了append或replace,测试也会失败。奇怪的是,一个简单的比较就能奏效:

elif [[ "$2" != "append" ]]

因此,我知道问题出在或部分,但我无法解决问题。

使用
&
而不是
|

elif [[ "$2" != "append" ]] && [[ "$2" != "replace" ]]
如果使用
| |
,则每个字符串都将通过测试。没有一个字符串同时等于
append
replace


如果$2既不是“append”也不是“replace”,我正在寻找执行elif语句的表达式


直接从英语翻译成代码有时有效,有时无效。这里没有。你真的在寻找一张支票,
$2
既不是“追加”也不是“替换”。没有NOR操作员。有一个AND运算符,如中所示:检查
$2
是否为“append”,是否为“replace”。这是一个可以翻译的句子。

使用
&
而不是
|

elif [[ "$2" != "append" ]] && [[ "$2" != "replace" ]]
如果使用
| |
,则每个字符串都将通过测试。没有一个字符串同时等于
append
replace


如果$2既不是“append”也不是“replace”,我正在寻找执行elif语句的表达式


直接从英语翻译成代码有时有效,有时无效。这里没有。你真的在寻找一张支票,
$2
既不是“追加”也不是“替换”。没有NOR操作员。有一个AND运算符,如中所示:检查
$2
是否为“append”,是否为“replace”。这是一个可以翻译的句子。

条件作用可能是错误的

[[“$2”!=“append”]| |[“$2”!=“replace”]]
总是正确的


[“$2”!=“append”]
如果
[[$2==replace]]
或者如果
$2
除了
append

之外还有任何其他值,则该条件可能是错误的

[[“$2”!=“append”]| |[“$2”!=“replace”]]
总是正确的


[“$2”!=“append”]
如果
[[$2==replace]]
或者
$2
除了
append

之外还有任何其他值,那么
[[“$2”!=“append”]
总是正确的。我建议您将其放在括号内:

elif [[ $2 != 'append' && $2 != 'replace' ]]
或者可以使用extglob完全省略&&项:

shopt -s extglob
...

elif [[ $2 != @(append|replace) ]]
看来这正是你所期望的


请注意,您不必在括号内引用左侧。

此外,我建议您将其放在括号内:

elif [[ $2 != 'append' && $2 != 'replace' ]]
或者可以使用extglob完全省略&&项:

shopt -s extglob
...

elif [[ $2 != @(append|replace) ]]
看来这正是你所期望的


请注意,您不必在
[[]]
括号内引用左侧。

它应该是
elif[[“$2”!=“append”| |“$2”!=“replace”]]
$2
append”
时返回的“[[“$2”!=“replace”]”是什么?对还是错?@khachik
|
在括号内和括号外均有效。这不是问题所在。我正在寻找表达式来执行elif语句,如果$2既不是“append”也不是“replace”,那么它应该是
elif[[“$2”!=“append”| |“$2”!=“replace”]
$2
“append”
时返回的“[[“$2”!=“replace”]]”是什么?对还是错?@khachik
|
在括号内和括号外均有效。这不是问题所在。如果$2既不是“append”也不是“replace”Eureka,那么我正在寻找执行elif语句的表达式!真管用!谢谢-我想我什么都试过了,但&尤里卡!真管用!谢谢-我想我什么都试过了&&