我有点困惑:为什么正则表达式在命令行中使用grep非常好用,因为我在bash条件语句中使用完全相同的正则表达式,它根本不起作用?
我想匹配所有包含字母的字符串,因此我的正则表达式是:
^[a-zA-Z]\+$
。
请你帮我解决这个问题吗?
以下是我的bash代码的片段
if ! [[ "$1" =~ '^[a-zA-z]+$' ]] ; then
echo "Error: illegal input string." >&2
exit 1
fi
答案 0 :(得分:2)
不要逃避+
。
这对我有用:
$ [[ "Abc" =~ ^[a-zA-Z]+$ ]] && echo "it matches"
$ it matches
此外,正则表达式周围不需要单引号。以下适用于我:
if ! [[ "$1" =~ ^[a-zA-z]+$ ]] ; then
echo "Error: illegal input string." >&2
exit 1
fi