4
$ {! FOO} และ zsh
${!FOO}ทำการทดแทนสองครั้งในbashความหมายมันใช้ค่า (สตริง) ของ FOO และใช้มันเป็นชื่อตัวแปร zshไม่รองรับคุณสมบัตินี้ มีวิธีที่จะทำให้งานนี้ในเดียวกันbashและzsh? พื้นหลัง: ฉันมีรายการตัวแปรสภาพแวดล้อมเช่น PATH MAIL EDITOR และต้องการพิมพ์ชื่อตัวแปรก่อนหลังจากนั้นค่าของมัน ใช้งานbashได้ แต่ไม่ใช่zsh: for VAR in LIST do echo $VAR echo ${!VAR} done ควรเป็นไปได้ด้วย "วิธีเก่า" ด้วยevalแต่ฉันไม่สามารถทำงาน: for VAR in LIST do echo $VAR echo `eval \$$VAR` done ฉันไม่เคยจะเข้าใจว่าทำไมฉันถึงไม่สามารถทำการทดแทนอย่างลึกซึ้งโดยพลการอย่างเช่น${${VAR}}หรือแม้ว่า${${${VAR}}}จำเป็นต้องมีดังนั้นคำอธิบายสำหรับสิ่งนั้นก็จะดีเช่นกัน