を使用すると、$
前の文字が$
文字列の末尾に表示される必要があることがわかります。
a
しかし、変数が整数の場合、以下に提供されるテストの違いはわかりません。
[[ a =~ -?[0-9]+ ]]
[[ a =~ ^-?[0-9]+$ ]]
彼らは同じですか?
ベストアンサー1
いいえ、表現が[0-9]+
異なります[0-9]+$
。最初は1つ以上の数字と一致します。どの場所でも文字列では、後者は次のようになります。ただ1つ以上の数値シーケンスと一致終わりひも。説明のために、このスクリプトを使用して最初の引数に対して式をテストします。
#!/bin/bash
a=$1
if [[ $a =~ -?[0-9]+ ]]; then
echo "match to first expression"
else
echo "no match to first expression"
fi
if [[ $a =~ ^-?[0-9]+$ ]]; then
echo "match to second expression"
else
echo "no match to second expression"
fi
結果は次のとおりです。
$ ./test.sh 12345
match to first expression
match to second expression
$ ./test.sh 12345AA
match to first expression
no match to second expression