Theo dõi phần nền trong câu hỏi này .
Trong bash
tôi có thể sử dụng ${!FOO}
để thay thế kép, trong zsh
${(P)FOO}
. Trong cả hai, trường học cũ (hack-y) eval \$$FOO
hoạt động.
Vì vậy, điều thông minh và hợp lý nhất đối với tôi sẽ là ${${FOO}}, ${${${FOO}}}…
thay thế gấp đôi / gấp ba / n. Tại sao công việc này không như mong đợi?
Thứ hai: Những gì \
làm trong eval
tuyên bố? Tôi nghĩ đó là một lối thoát, làm cho một cái gì đó như eval \$$$FOO
không thể. Làm thế nào để thay thế triple / n với cái đó hoạt động trong mọi shell?
l3=l2; eval eval eval echo \\\$\\$\$$l3
→53294
vì vậy không chính xác mô-đun.