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

如有描述有误或者有更好的写法,欢迎提出交流!

 

posted on 2021-03-17 17:02  Leader.Z  阅读(3524)  评论(0编辑  收藏  举报