パラメータ置換時に$ atomの正しい使用

パラメータ置換時に$ atomの正しい使用

次のように、最初の文字から文字列の最後まで-すべての項目を削除してパラメータ置換を実行しようとしています。v0.1-bla-hblah-232 -> v0.1

だから、次のスクリプトを使用します。

#!/usr/bin/env bash
project_version=$(git describe --tags --long)
clean_version=${project_version%-$}
echo "$project_version"
echo "$clean_version"

これを実行すると動作しません。

test λ ./revisioncount.sh
v0.1-2-g2ff1e73
v0.1-2-g2ff1e73

$bashが原子を選択していないようです。バックスラッシュも機能しません:\$

これで、代替行を次のように変更した場合:

clean_version=${project_version%%-*}

それはうまくいきます:

test λ ./revisioncount.sh
v0.1-2-g2ff1e73
v0.1

$目的の効果を得るには(文字列の最後の一致)をどのように使用しますか?

ベストアンサー1

clean_version=${project_version%%-*}

あなたが見つけたように、これは正しい使い方です。

%そして%%マッチ終わり$定義によると、最後に「一致」などのアンカーは必要ありません。

#最初に参照してマッチングするために。##

興味深いケースは、/基本的にどこでも一致する拡張です。ここ最初文字はパターンが開始または終了で一致するように強制します#%

おすすめ記事