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

bat*_*tty 21 bash shell scripting substring

我有一个字符串

$VAR="I-UAT"; 
Run Code Online (Sandbox Code Playgroud)

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

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

And*_*ark 21

什么壳?使用bash:

if [[ "$VAR" =~ "UAT" ]]; then
    echo "matched"
else
    echo "didn't match"
fi
Run Code Online (Sandbox Code Playgroud)

  • 另外,仅限bash,`[["$ VAR"=*UAT*]]` - 右侧必须不加引号以进行模式匹配. (6认同)

Die*_*lla 8

你可以这样做:

case "$VAR" in
  *UAT*)
   # code when var has UAT
  ;;
esac
Run Code Online (Sandbox Code Playgroud)

  • `case"$ VAR"in`总是可以用`case $ VAR in`代替.shell不会在`case`后面的单词上执行*field splitting*或*pathname expansion*.类似地,`var ="$ other"`和`var = $ other`一样安全. (2认同)

Jon*_*ler 5

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

case "$VAR" in
*UAT*) : OK;;
*)     : Oops;;
esac
Run Code Online (Sandbox Code Playgroud)

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