我正在尝试创建一个if语句来检查变量是否不等于多个不同的值。
这是我的代码:
for subID in {1..100}
if [ "${subID}" != 2 8 34 56 89 92 ]
echo "Yes"
else
echo "No"
fi
done
我收到的错误是说参数太多了。有没有办法在if语句中完全编码,或者我应该使用for循环将我想要比较的值设置为单独的变量?
答案 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