ฉันมีตัวแปรในสคริปต์ทุบตีของฉันซึ่งมีค่าเป็นดังนี้:
~/a/b/c
สังเกตว่ามันเป็นเครื่องหมายทิลเดอที่ไม่ขยาย เมื่อฉันทำ ls -lt กับตัวแปรนี้ (เรียกมันว่า $ VAR) ฉันไม่พบไดเร็กทอรีดังกล่าว ฉันต้องการให้ bash ตีความ / ขยายตัวแปรนี้โดยไม่ต้องดำเนินการ กล่าวอีกนัยหนึ่งฉันต้องการให้ bash เรียกใช้ eval แต่ไม่ได้เรียกใช้คำสั่งที่ประเมิน เป็นไปได้ในการทุบตี?
ฉันจะจัดการส่งสิ่งนี้ไปยังสคริปต์ของฉันโดยไม่ขยายได้อย่างไร ฉันส่งผ่านอาร์กิวเมนต์โดยรอบด้วยเครื่องหมายคำพูดคู่
ลองใช้คำสั่งนี้เพื่อดูว่าฉันหมายถึงอะไร:
ls -lt "~"
นี่คือสถานการณ์ที่ฉันอยู่ฉันต้องการให้ตัวหนอนขยาย กล่าวอีกนัยหนึ่งฉันควรแทนที่เวทมนตร์ด้วยอะไรเพื่อให้คำสั่งทั้งสองนี้เหมือนกัน:
ls -lt ~/abc/def/ghi
และ
ls -lt $(magic "~/abc/def/ghi")
โปรดทราบว่า ~ / abc / def / ghi อาจมีหรือไม่มีอยู่
eval
แต่ไม่ทั้งหมดเลี่ยงการใช้