คำตอบที่คุณพบในการแลกเปลี่ยนสแต็คนั้นถูกต้องและบทช่วยสอนนี้ไม่ถูกต้อง คุณสามารถทดลองด้วยตัวเองหรือมองมันได้ในมาตรฐาน unset IFS
เทียบเท่ากับการตั้งค่าเป็นค่าเริ่มต้นของ space-tab-newline ในขณะที่ว่างเปล่าIFS
ปิดการแยกฟิลด์อย่างมีประสิทธิภาพ
คุณสามารถดูหน้าของ Sven Mascheck บน IFSเกี่ยวกับการใช้งานในอดีต กระสุนประวัติศาสตร์สองสามตัวไม่ชอบunset IFS
และ ksh รุ่นเก่ามากถือว่ามันว่างเปล่าIFS
แต่กระสุนสมัยใหม่ทั้งหมดและกระสุนเก่าส่วนใหญ่ถือว่าไม่มีการตั้งค่าIFS
เหมือนค่าเริ่มต้น
คุณไม่ควรเริ่มต้นสคริปต์ด้วยIFS=
เว้นแต่คุณต้องการปิดการแบ่งฟิลด์ (ซึ่งอาจเป็นการตัดสินใจที่สมเหตุสมผล - แต่โปรดทราบว่าคุณยังต้องใส่เครื่องหมายอัญประกาศล้อมรอบการแทนที่เพื่อหลีกเลี่ยงการวนซ้ำนอกจากว่าคุณจะปิดด้วยset -f
) unset IFS
การรีเซ็ตค่าเริ่มต้นใช้งาน เป็นที่ถกเถียงกันว่าสิ่งนี้มีประโยชน์เมื่อเริ่มต้นสคริปต์หรือไม่ มีสิ่งเลวร้ายอื่น ๆ อีกมากมายเช่นการหลบPATH
ซึ่งผู้โทรสามารถทำได้เพื่อทำให้สคริปต์ของคุณผิดพลาด
PATH
กวดวิชานี้ยังให้คำแนะนำในการรีเซ็ต นี่เป็นคำแนะนำที่ไม่ดี ในกรณีส่วนใหญ่คุณไม่สามารถคาดเดาเส้นทางการค้นหาที่ถูกต้องได้ แต่ผู้ใช้รู้ คุณจะรู้ว่าไม่ว่าจะเป็น/usr/local/bin
หรือ/home/bob/bin
มีข้อผิดพลาดรุ่นคงที่ของสาธารณูปโภคบนยูนิกซ์โบราณที่คนใน/usr/bin
มีรถ? คุณต้องการฝังตรรกะทั้งหมดเพื่อคิดออกว่าจะนำ/usr/xpg6/bin
หน้า/bin
? คุณต้องการตำแหน่ง/usr/gnu/bin
อะไร อย่ารีเซ็ต PATH ยกเว้นว่าสคริปต์ของคุณกำหนดเป้าหมายระบบเฉพาะ
ฉันไม่ได้อ่านบทช่วยสอนนี้ แต่ฉันได้ตรวจสอบสิ่งหนึ่ง: มันไม่ได้บอกคุณตั้งแต่เริ่มต้นที่จะใส่เครื่องหมายคำพูดคู่รอบการแทนที่ตัวแปรและการแทนที่คำสั่งเสมอ ดังนั้นฉันไม่คิดว่าการสอนนี้เป็นสิ่งที่ดี
unset IFS
ไม่รีเซ็ต IFS เป็นค่าเริ่มต้นใน bash แม้ว่าจะรีเซ็ตการแยกฟิลด์