BASH匹配中的正则表达式检查无效

时间:2015-08-04 18:58:14

标签: regex bash

我正在寻找-h--help的正则表达式匹配,认为下面应该匹配它不符合我的预期,我做错了什么?

if [[ "$1" =~ ^((-{1,2})([Hh]$|[Hh][Ee][Ll][Pp])|)$ ]] ; then
  echo 'help flagged' ; exit 0
fi

请记住,getop在代码中使用得更远...

预期的结果是如果-h或--help(任何情况)被击中,我们回显并退出

1 个答案:

答案 0 :(得分:2)

如果你想要匹配的是-h--help,无论如何,我都会使用

if (shopt -s nocasematch; [[ $1 = @(-h|--help) ]]); then

子shell将casematch选项中的更改隔离到此测试,扩展模式与-h--help匹配。 (它比[[ $1 = -h || $1 = --help ]]短。)