在shell脚本变量中查找子字符串

时间:2011-07-25 23:05:51

标签: bash shell scripting substring

我有一个字符串

$VAR="I-UAT"; 

在我的shell脚本代码中。我需要一个条件语句来检查该字符串中是否存在"UAT"

我应该使用什么命令来获得true或false boolean作为输出? 或者还有其他检查方法吗?

6 个答案:

答案 0 :(得分:21)

什么外壳?使用bash:

if [[ "$VAR" =~ "UAT" ]]; then
    echo "matched"
else
    echo "didn't match"
fi

答案 1 :(得分:8)

你可以这样做:

case "$VAR" in
  *UAT*)
   # code when var has UAT
  ;;
esac

答案 2 :(得分:5)

经典的方式,如果你提前知道你正在寻找什么字符串,那就是case声明:

case "$VAR" in
*UAT*) : OK;;
*)     : Oops;;
esac

您可以使用适当的命令代替:命令。这也适用于Bourne和Korn的外壳,而不仅仅是Bash。

答案 3 :(得分:1)

bash脚本中,您可以使用

if [ "$VAR" != "${VAR/UAT/}" ]; then
  # UAT present in $VAR
fi

答案 4 :(得分:1)

尝试使用grep:

$ echo I\-UAT | grep UAT
$ echo $?
0
$ echo I\-UAT | grep UAX
$ echo $?
1

所以测试

if [ $? -ne 0 ]; then
  # not found
else
  # found
fi

答案 5 :(得分:1)

found=`echo $VAR | grep -c UAT`

然后测试$ found非零。