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}