Bashとzshの二重および三重置換

Bashとzshの二重および三重置換

後続のバックエンド部分この問題

Iは二重交換bashに使用できます。どちらの場合も、旧式(hack-y)が機能します。${!FOO}zsh ${(P)FOO}eval \$$FOO

だから私にとって最も賢明で最も論理的なのは、${${FOO}}, ${${${FOO}}}…二重/三重/n置換です。なぜ期待どおりに動作しないのですか?

第二:ステートメント\の機能は何ですかeval?警察アウトで仕事がeval \$$$FOO不可能になると思います。すべてのシェルで動作するトリプル/ n置換をどのように使用できますか?

ベストアンサー1

(現在のプロセスID)の拡張を\防ぐために使用する必要があります。$$トリプル置換の場合は二重評価が必要であるため、各評価で不要な拡張を避けるために、より多くのエスケープが必要です。

#! /bin/bash
l0=value
l1=l0
l2=l1
l3=l2
l4=l3

echo $l0
eval echo \$$l1
eval eval echo \\$\$$l2
eval eval eval echo \\\\$\\$\$$l3
eval eval eval eval echo \\\\\\\\$\\\\$\\$\$$l4

おすすめ記事