Heredocs ไม่สามารถเยื้องได้เหมือนสคริปต์ที่เหลือ (เว้นแต่คุณจะใช้ -EOM
แต่คุณสามารถเยื้องด้วยแท็บเท่านั้น) ท้ายที่สุดแล้ว จุดประสงค์ของเอกสารนี้คือการอนุญาตให้คุณเขียนสิ่งที่จะปรากฏขึ้น อย่างที่เป็น. ซึ่งหมายความว่า อีโอเอ็ม
ไม่สามารถเป็นเช่นนี้:
ในขณะที่บางสิ่งบางอย่าง;
ทำ
คำสั่ง <<EOM
สวัสดี!
อีโอเอ็ม
เสร็จแล้ว
แทน อีโอเอ็ม
(หรือเครื่องหมายอื่นๆ ที่คุณใช้) จะต้องเป็นสิ่งเดียวในบรรทัด ดังนั้นจึงไม่มีการเว้นวรรคหรือสิ่งอื่นใดก่อนหรือหลัง แบบนี้:
ในขณะที่บางสิ่งบางอย่าง;
ทำ
คำสั่ง <<EOM
สวัสดี!
อีโอเอ็ม
เสร็จแล้ว
นอกจากนี้ โปรดทราบว่าด้วยเหตุผลที่กล่าวถึงข้างต้น ช่องว่างนำหน้าจะถูกรวมไว้ด้วย เพื่อให้สิ่งนี้:
ค=0;
ในขณะที่ [ $c -eq 0 ];
ทำ
แมว <<EOM
สวัสดี!
อีโอเอ็ม
ให้ c ++
เสร็จแล้ว
จะพิมพ์:
$fo.sh
สวัสดี!
ขณะนี้:
ค=0;
ในขณะที่ [ $c -eq 0 ];
ทำ
แมว <<EOM
สวัสดี!
อีโอเอ็ม
ให้ c ++
เสร็จแล้ว
จะพิมพ์:
$fo.sh
สวัสดี!
สุดท้าย เมื่อรันสคริปต์ของคุณ ฉันได้รับข้อผิดพลาดอื่น:
$fo.sh
ขณะนี้ฉันอยู่ในไดเร็กทอรีต่อไปนี้:
/บ้าน/terdon/foo
/home/terdon/scripts/foo.sh: บรรทัดที่ 108: คำเตือน: เอกสารที่นี่ที่บรรทัดที่ 84 คั่นด้วยจุดสิ้นสุดของไฟล์ (ต้องการ `EOM')
/home/terdon/scripts/foo.sh: บรรทัดที่ 109: ข้อผิดพลาดทางไวยากรณ์: จุดสิ้นสุดของไฟล์ที่ไม่คาดคิด
อาจเป็นเพราะฉันไม่ได้ให้ข้อมูลที่ป้อนเหมือนกัน และเนื่องจากคุณไม่ได้สิ้นสุด EOM อย่างถูกต้อง ข้อมูลของคุณจึงอาจถูกประมวลผลโดยสคริปต์ และนั่นเป็นสาเหตุที่ทำให้คุณเห็นข้อผิดพลาดอื่น ฉันหวังว่าการแก้ไขของฉันจะกำจัดมันได้ เพราะมันทำให้ฉันเรียกใช้สคริปต์ของคุณจนจบในเครื่องของฉัน