コマンド置換は変数置換内にネストできますか?

コマンド置換は変数置換内にネストできますか?

コマンドを介してアクセスされる特定の文字列に対して変数置換を使用したいと思います。たとえば、クリップボードにコピーした内容には、次のようにアクセスできます。

$ xclip -o -selection clipboard
Here's a string I just copied.

変数に割り当てると、変数置換を実行できます。

$ var=$(xclip -o -selection clipboard)
$ echo $var
Here's a string I just copied.
$ echo ${var/copi/knott}
Here's a string I just knotted.

しかし、変数に代入せずに変数置換を実行する方法はありますか?概念的にはそうです。

$ echo ${$(xclip -o -selection clipboard)/copi/knott}
bash: ${$(xclip -o -selection clipboard)/copi/knott}: bad substitution

var文字列以外の変数名が必要なため、この構文は失敗します。

ベストアンサー1

いいえ、できません。bash他のほとんどのシェル(zsh除く

それでzshあなたはできます入れ子の交換:

$ echo ${$(echo 123)/123/456}   
456

おすすめ記事