如何使用 if 语句将变量与 bash 中的多个值进行比较

How to use if statement to compare variable with multiple values in bash

我正在尝试创建一个 if 语句来检查一个变量是否不等于多个不同的值。

这是我的代码:

for subID in {1..100}
    if [ "${subID}" != 2 8 34 56 89 92 ]
        echo "Yes"
    else
        echo "No"
    fi
done

我收到一条错误消息,指出参数过多。有没有一种方法可以在 if 语句中完全对此进行编码,或者我是否应该使用 for 循环将要比较的值设置为单独的变量?

使用 case 语句

for subID in {1..100}; do
    case $subID in 
        2|8|34|56|89|92) echo "Yes" ;;
        *)               echo "No" ;;
    esac
done

或bash扩展通配

shopt -s extglob
for subID in {1..100}; do
    if [[ $subID == @(2|8|34|56|89|92) ]]; then
        echo Yes
    else
        echo No
    fi
done