bash スクリプトで単純な正規表現を照合しようとしています。GNU bash バージョン 4.2.24(1)-release (x86_64-pc-linux-gnu) では期待どおりに動作しますが、 GNU bash バージョン 3.2.25(1)-release (x86_64-redhat-linux- gnu)では動作しません。 )
コードは次のとおりです。
#!/bin/bash
line="[foo]"
[[ $line =~ ^\[.*\]$ ]] && echo "regex matched"
echo "value of \$? : " $?
echo "value of BASH_REMATCH : " $BASH_REMATCH
/bin/bash --version|grep "GNU bash"
これは、GNU bash、バージョン 4.2.24(1)-release (x86_64-pc-linux-gnu)の出力です。
$? の正規表現一致
値 : BASH_REMATCH の 0
の値: [foo]
GNU bash、バージョン 4.2.24(1)-release (x86_64-pc-linux-gnu)
これは、GNU bash、バージョン 3.2.25(1)-release (x86_64-redhat-linux-gnu)の出力です。
$の値?
: BASH_REMATCH の1 つの値:
GNU bash、バージョン 3.2.25(1)-release (x86_64-redhat-linux-gnu)
=~の演算子の動作に関して、ここや他の場所で多くの投稿を読みましたが、同じ問題を抱えている人を見つけることができません。bash 3.2 で大きな変更があったことがわかりましたが、私が見る限り、3.2 以降は機能するはずです。