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

时间:2015-08-13 22:13:53

标签: bash if-statement comparison

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

这是我的代码:

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

我收到的错误是说参数太多了。有没有办法在if语句中完全编码,或者我应该使用for循环将我想要比较的值设置为单独的变量?

1 个答案:

答案 0 :(得分:1)

使用case声明

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

或bash extended globbing

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