Bashパラメータ拡張を使用して、コマンド置換または別のパラメータ拡張の出力を変更しようとしています。
次のネストされた拡張は、Zshで非常にうまく機能します。ただし、Bashで「不正な置換」エラーが発生します:
${${PWD##*/}//trunk/latest}
または
${$(basename $PWD)//trunk/latest}
出力は、$PWD
の最後のフォルダーである必要があります 、latest
に置き換えられました 現在のディレクトリがtrunk
の場合
したがって、/home/user/trunk
latest
になる必要があります
変数やパイプに依存せずに拡張をチェーンできるBashに相当するものはありますか?または、Bash展開では、入力を文字列またはプレーン変数のみにすることができますか?
承認された回答:
いいえ、置換演算子のネストはzsh
に固有です。 。
zsh
では注意してください (t)csh
のように 、${PWD:t:s/trunk/latest/}
を実行することもできます 。
bash
また、履歴拡張のためにこれらのcsh履歴修飾子をサポートしていますが、パラメーター拡張のためにそれらをサポートしていません。
ここではbash
、一時変数を使用します:
var=${PWD##*/} var=${var//trunk/latest}