2015-08-13 49 views
0

我試圖做一個if語句來檢查變量是否不等於多個不同的值。如何使用if語句將變量與bash中的多個值進行比較

這裏是我的代碼:

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

我得到一個錯誤,說有太多的爭論。有沒有一種方法可以在if語句中完全編寫代碼,或者我應該使用for循環將我想要比較的值設置爲單獨變量?

回答

1

使用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 
相關問題