文字列にサフィックスがまだ存在しない場合は、(bashで)サフィックスを追加するための最良の方法を見つけようとしています。
私は最初にこれを思いついた:
case "$R" in
*.git ) ;;
* ) R=$R.git ;;
esac
どちらが機能しますか。しかし、面倒です。
次に、これについて考えました:
R=${R%.git}.git
これは素晴らしく、コンパクトできれいです。
他のオプションはありますか?知っておくべき落とし穴はありますか?
[[ $r == *.git ]] || r+=.git
私の好みの方法になります。
shopt -s extglob
case $r in !(*.git)) r+=.git; esac
より良いcase方法かもしれません。R2番目の方法は、それが設定されていてnullではないことが保証されている場合、おそらく十分です。その他の可能性は次のとおりです。
${r:+'declare'} r="${r%.git}.git"
r=${r%.git}.git ${r:+'true'}
POSIX sh の場合、どちらの方法でも問題ありませんが、すべて大文字の変数名を使用しないことを検討する必要があります。