我有以下一段 Bash 脚本:
function get_cms {
echo "input cms name"
read cms
cms=${cms,,}
if [ "$cms" != "wordpress" && "$cms" != "meganto" && "$cms" != "typo3" ]; then
get_cms
fi
}
但无论我输入什么(正确和错误的值),它都不会再次调用该函数,因为我只想允许这 3 个输入中的 1 个。
我已经用 ||
和 [ var != value ] 或 [ var != value1 ] 或 [ var != value1 ]
尝试过,但没有任何效果.
有人能指出我正确的方向吗?
最佳答案
如果主要目的是检查提供的值是否未在列表中找到,也许您可以通过“等波浪号”运算符使用 BASH 中内置的扩展正则表达式匹配(另请参见 this answer):
if ! [[ "$cms" =~ ^(wordpress|meganto|typo3)$ ]]; then get_cms ; fi
关于string - 如何在 Bash 中将一个字符串与多个正确值进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157435/