パラメータ拡張を使用して他の拡張の出力を変更する

パラメータ拡張を使用して他の拡張の出力を変更する

Bashパラメーター拡張を使用して、コマンド置換または他のパラメーター拡張の出力を変更しようとしています。

次のネストされた拡張はZshではうまく機能しますが、Bashでは「無効な置換」エラーが発生します。

${${PWD##*/}//trunk/latest}

または

${$(basename $PWD)//trunk/latest}

出力は最後のフォルダでなければならず、現在のディレクトリが次の場合に$PWD置き換えられます。latesttrunk

だから/home/user/trunkそれをしなければならないlatest

変数やパイプに依存せずにチェーン拡張を可能にするBashと同等のものはありますか?それとも、Bash拡張は文字列または一般変数のみを入力できますか?

ベストアンサー1

いいえ、代替演算子の入れ子はですzsh

zshlike withを使用して(t)cshこれを行うこともできます${PWD:t:s/trunk/latest/}

csh履歴修飾子は履歴拡張にもサポートされていますが、パラメータ拡張bashはサポートされていません。

ここでは一時変数が使用されますbash

var=${PWD##*/} var=${var//trunk/latest}

おすすめ記事