0

私は少し混乱しています: コマンドラインから grep を使用して正規表現が完全に機能するのはなぜですか? bash 条件ステートメントでまったく同じ正規表現を使用すると、まったく機能しません。

文字のみを含むすべての文字列に一致させたいので、正規表現は次のとおり ^[a-zA-Z]\+$です。

これを整理するのを手伝ってくれませんか?

これが私のbashコードのスニペットです

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

1 に答える 1

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
于 2012-05-01T10:13:59.573 に答える