正则表达式从命令行匹配,与bash脚本不匹配

时间:2012-05-01 10:06:17

标签: regex bash

我有点困惑:为什么正则表达式在命令行中使用grep非常好用,因为我在bash条件语句中使用完全相同的正则表达式,它根本不起作用?

我想匹配所有包含字母的字符串,因此我的正则表达式是: ^[a-zA-Z]\+$

请你帮我解决这个问题吗?

以下是我的bash代码的片段

if ! [[ "$1" =~ '^[a-zA-z]+$' ]] ; then
    echo "Error: illegal input string." >&2
    exit 1
fi

1 个答案:

答案 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