如何在shell脚本中使正则表达式与grep匹配?

如何在shell脚本中使正则表达式与grep匹配?,shell,grep,Shell,Grep,我正在尝试创建一个shell脚本,该脚本将字符串与预定义的正则表达式相匹配。我有以下代码: #!/bin/sh name="Name of string to match. #123" (echo "$name" | grep -Eq ^[#]\d+$) && echo "matched" || echo "did not match" 我总是收到一条“不匹配”的消息,尽管我认为示例中的字符串应该与正则表达式匹配。谁能意识到我做错了什么?正则表达式是错误的还是调用了gre

我正在尝试创建一个shell脚本,该脚本将字符串与预定义的正则表达式相匹配。我有以下代码:

#!/bin/sh
name="Name of string to match. #123"

(echo "$name" | grep -Eq  ^[#]\d+$) && echo "matched" || echo "did not 
match"

我总是收到一条“不匹配”的消息,尽管我认为示例中的字符串应该与正则表达式匹配。谁能意识到我做错了什么?正则表达式是错误的还是调用了grep?

将正则表达式用引号括起来:

(echo "$name" | grep -Eq '^[#]\d+$') && echo "matched" || echo "did not match"

如果您希望示例输入匹配,请删除输入锚点的开始部分
^
,即使用
'[#]\d+$'
作为正则表达式(它将匹配任何以
.
结尾的数字)。

谢谢!就这样