我很难让正则表达式匹配在 bash case 语句中工作。
示例代码:
#!/bin/bash
str=' word1 word2'
echo "With grep:"
echo "$str" |grep '^\s*\<word1\>'
echo "With case:"
case "$str" in
'^\s*\<word1\>') echo "$str" ;;
esac
该示例适用于 grep,但不适用于 case...我很困惑,因为一些更简单的正则表达式适用于 case。 case 是否对正则表达式使用不同的语法?我只是没有正确地逃避事情吗?
答案1
那是因为case
不使用正则表达式而是使用 bash路径名扩展。您可以从 bash 手册页或从Bash 参考手册。