BashスクリプトからSymfonyのバージョン番号を取得するために正規表現を使用しようとしています。

BashスクリプトからSymfonyのバージョン番号を取得するために正規表現を使用しようとしています。

bin/console --version私は、端末でSymfonyプロジェクトを呼び出すときに、Symfony 4.4.3 (env: dev, debug: true) コマンドの結果が実際に予想されるパターンと一致することを確認するために一致操作を実行するのが好きです。

次のスキーマがあります。https://regex101.com/r/n2hBR8/1

Bashスクリプトでいくつか試してみましたが、正しく動作しません。

#symfonyVersionRegex="Symfony\s\d{1}.*"
#symfonyVersionRegex="^Symfony\s\d{1}.*$"
symfonyVersionRegex="^Symfony\s\d.*$"

symfonyVersionRaw=`bin/console --version`

if [[ symfonyVersionRaw =~ $symfonyVersionRegex ]]; then
    echo Version number found
else
    echo Version number NOT found
fi

echo SymfonyVersionRawを実行すると、期待されるバージョン文字列が得られるため、うまくいきますが、何を試しても常に否定的な結果(「バージョン番号が見つかりません」)が表示されます。

答え1

まず、間違いがあると思います。$前に置かなかったsymfonyVersionRaw

[0-9]その後、数字をまたはに合わせる必要があります[[:digit:]]

ここを見てください:正規表現で数字を一致させる方法

関連情報