ติดตามส่วนพื้นหลังในคำถามนี้
ในbash
ที่ฉันสามารถใช้เพื่อทดแทนคู่ใน${!FOO}
zsh
${(P)FOO}
ทั้งในโรงเรียนเก่า (แฮ็ค - y) eval \$$FOO
ทำงาน
ดังนั้นสิ่งที่ฉลาดและสมเหตุสมผลที่สุดสำหรับฉันคือ${${FOO}}, ${${${FOO}}}…
การทดแทนสอง / สาม / n เหตุใดจึงไม่ทำงานตามที่คาดไว้
ประการที่สอง: สิ่งที่\
ทำในeval
คำสั่ง? ฉันคิดว่ามันเป็นการหลบหนีทำให้บางอย่างeval \$$$FOO
เป็นไปไม่ได้ จะทำการทดแทนแบบสาม / n ด้วยสิ่งนั้นได้อย่างไรในทุกเชลล์?
l3=l2; eval eval eval echo \\\$\\$\$$l3
→53294
ดังนั้นจึงไม่ใช่แบบแยกส่วน