15
วิธีขยายตัวแปรพิเศษด้วยตนเอง (เช่น ~ tilde) ใน bash
ฉันมีตัวแปรในสคริปต์ทุบตีของฉันซึ่งมีค่าเป็นดังนี้: ~/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 อาจมีหรือไม่มีอยู่