shell中判断变量是否存在某个集合中
大部分在使用shell判断条件都会用到运算符
!=或者-ne(不等于)
大于 -gt (greater than)
小于 -lt (less than)
小于或等于 -le (less than or equal)
但是我们如果要判断是否存在某个集合中(相当于sql中的in或者not in),用上面的符号在集合值少的情况下可以分开写多个,
但要是遇到比较多的,会比较麻烦。
我们可以使用(!)=~来实现,~表示对后面变量值的匹配,语法为:{集合} =~ 变量
举例:判断循环中变量i是否存在,1或3,存在输出OK,不存在输出NG
集合可以用数组定义,或者直接写
#!/bin/bash
array=(1,3)
for i in (1..9)
do
if [[ ! "${array[@]}" =~ "${i}" ]];then
echo -e 'NG'
else
echo -e 'OK'
fi
done
或者
#!/bin/bash
for i in (1..9)
do
if [[ ! {1,3} =~ "${i}" ]];then
echo -e 'NG'
else
echo -e 'OK'
fi
done
如有描述有误或者有更好的写法,欢迎提出交流!