如何构造正则表达式以比较shell脚本中不区分大小写的字符串?

时间:2018-12-23 00:07:34

标签: regex string bash shell

我正在将命令行参数传递给Shell脚本,并且正在将其作为正则表达式进行比较。以下代码区分大小写:

[[ $1 =~ ^(cat)|(dog)$ ]] && echo "match" || echo "no match"

如何修改将忽略大小写的正则表达式?我将能够通过cAt,它应该匹配。

我想使用/i regex标志,因为它忽略大小写。但是如何在shell脚本中使用它?我尝试过[[ $1 =~ /(cat)|(dog)/i ]],但是脚本退出时出现语法错误。

StackOverflow has a similar question but it does not answer my inquiry.我想使用test来比较两个字符串,并且不希望使用shopt -s nocasematchgrep <expression>

1 个答案:

答案 0 :(得分:2)

只需使用

shopt -s nocasematch

在执行命令之前。

或者

shopt -s nocasematch && [[ 'doG' =~ (cat)|(dog) ]] && echo 'hi' || echo 'no match'