Bashパラメーター拡張を使用して、コマンド置換または他のパラメーター拡張の出力を変更しようとしています。
次のネストされた拡張はZshではうまく機能しますが、Bashでは「無効な置換」エラーが発生します。
${${PWD##*/}//trunk/latest}
または
${$(basename $PWD)//trunk/latest}
出力は最後のフォルダでなければならず、現在のディレクトリが次の場合に$PWD
置き換えられます。latest
trunk
だから/home/user/trunk
それをしなければならないlatest
変数やパイプに依存せずにチェーン拡張を可能にするBashと同等のものはありますか?それとも、Bash拡張は文字列または一般変数のみを入力できますか?
ベストアンサー1
いいえ、代替演算子の入れ子はですzsh
。
zsh
like withを使用して(t)csh
これを行うこともできます${PWD:t:s/trunk/latest/}
。
csh履歴修飾子は履歴拡張にもサポートされていますが、パラメータ拡張bash
はサポートされていません。
ここでは一時変数が使用されますbash
。
var=${PWD##*/} var=${var//trunk/latest}