我希望命令仅在字符串变量不等于到foo 或任何以bar开头的单词时执行。
if [[ $string != "foo" || $string != bar* ]]; then
commands
fi
当$ string = foo并且我使用以下代码时,它工作正常,没有命令执行:
if [[ $string != "foo" ]]; then
commands
fi
但是当我用||添加第二部分时这些命令在不应该执行时执行。
答案 0 :(得分:5)
您需要和,而不是或:
if [[ $string != "foo" && $string != bar* ]] ...
你的代码所说的是"如果字符串不等于foo,或者字符串不以bar&#34开头,那么一定是真的。 - 这对所有字符串都是正确的。
你需要说的是"字符串不等于foo,和字符串不能以bar"开头。
(您可能还希望在$string
附近加上双引号,如果它有可能是空的。)