string - 如何在 Bash 中将一个字符串与多个正确值进行比较?

标签 string bash comparison compare

我有以下一段 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/

相关文章:

python - 正则表达式使用递增的数字序列 Python

linux - 使用 printf %q 使带引号的字符串可用作 shell 脚本输入

mysql比较整数

types - 如何比较 Rust 中拥有的向量和静态向量的内容?

Java程序读取前缀和后缀

java - 从字符串数组+颜色词中获取每个单词

python - 执行Python脚本

bash - bash 中文件名模式的 Simil-group-by

python - 为什么使用 '==' 或 'is' 比较字符串有时会产生不同的结果?

python - 值错误 : invalid literal for int() with base 10: 'stop'