3
เหตุใดตัวเลือกในตัวแปรที่ยกมาจึงล้มเหลว แต่ทำงานเมื่อไม่ได้อ้างอิง
ฉันอ่านเกี่ยวกับว่าฉันควรอ้างอิงตัวแปรใน bash เช่น "$ foo" แทนที่จะเป็น $ foo อย่างไรก็ตามในขณะที่เขียนสคริปต์ฉันพบกรณีที่ใช้ได้โดยไม่ต้องใส่เครื่องหมายคำพูด แต่ไม่ใช่กับพวกเขา: wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX recieved from command line relative_path="$3" # /XXX received from command line อันนี้ใช้ได้ผล: wget $wget_options --directory_prefix="$local_root" "$remote_root$relative_path" อันนี้ไม่ (บันทึกคำพูดคู่ aroung $ wget_options): wget "$wget_options" --directory_prefix="$local_root" "$remote_root$relative_path" อะไรคือสาเหตุของสิ่งนี้? บรรทัดแรกเป็นเวอร์ชั่นที่ดี; หรือฉันควรสงสัยว่ามีข้อผิดพลาดที่ซ่อนอยู่ที่ไหนสักแห่งที่ทำให้เกิดพฤติกรรมนี้? …