GNU/Linux >> Linux の 問題 >  >> Linux

パラメータ展開を使用して別の展開の出力を変更しますか?

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}

Linux
  1. Bash履歴コマンドの使用方法

  2. $((Expr))の代わりに$ [Expr]を使用しますか?

  3. bash で以前のコマンドの出力を使用する

  1. bash `ls` 出力を json 配列に変換します

  2. 出力を bash 関数にパイプする

  3. 別のコマンドのパラメーターとしての Linux コマンド出力

  1. 別のBashセッションで実行中のプロセスの出力を表示する方法は?

  2. Bashブレースの拡張と変数?

  3. BashスクリプトでCdを使用できないのはなぜですか?