後続のバックエンド部分この問題。
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