次のように、最初の文字から文字列の最後まで-
すべての項目を削除してパラメータ置換を実行しようとしています。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%%-*}
あなたが見つけたように、これは正しい使い方です。
%
そして%%
マッチ終わり$
定義によると、最後に「一致」などのアンカーは必要ありません。
#
最初に参照してマッチングするために。##
興味深いケースは、/
基本的にどこでも一致する拡張です。ここ最初文字はパターンが開始または終了で一致するように強制します#
。%