man bash
นี้ถูกบันทึกไว้ใน การเกิดขึ้นครั้งเดียวของอักขระใด ๆ ใน IFS ที่ไม่ใช่ช่องว่างคั่นเขตข้อมูล
จากman bash
:
เชลล์ใช้อักขระแต่ละตัวของ IFS เป็นตัวคั่นและแยกผลลัพธ์ของการขยายตัวอื่น ๆ ออกเป็นคำโดยใช้อักขระเหล่านี้เป็นตัวยุติฟิลด์ ถ้าไอเอฟเอไม่มีการตั้งค่าหรือความคุ้มค่าเป็นสิ่ง<space><tab><newline>
เริ่มต้นแล้วลำดับของ<space>
,
<tab>
และ<newline>
ที่จุดเริ่มต้นและจุดสิ้นสุดของผลของการขยายตัวก่อนหน้านี้จะถูกละเลยและลำดับตัวอักษรใด ๆ ไอเอฟเอไม่ได้อยู่ที่จุดเริ่มต้นหรือจุดสิ้นสุดทำหน้าที่ในการกำหนดเขต คำ. หาก IFS มีค่าอื่นที่ไม่ใช่ค่าเริ่มต้นลำดับของพื้นที่ว่างของอักขระช่องว่างแท็บและขึ้นบรรทัดใหม่จะถูกละเว้นที่จุดเริ่มต้นและจุดสิ้นสุดของคำตราบใดที่อักขระช่องว่างอยู่ในค่าของ IFS (ตัวอักษรช่องว่าง IFS ) อักขระใด ๆ ใน IFS ที่ไม่ใช่ช่องว่าง IFS พร้อมกับอักขระช่องว่าง IFS ที่อยู่ติดกันใด ๆ จะคั่นเขตข้อมูล ลำดับของอักขระช่องว่างของ IFS ยังถือว่าเป็นตัวคั่น หากค่าของ IFS เป็นโมฆะจะไม่เกิดการแบ่งคำ [เน้นเพิ่มแล้ว]
ตัวอย่าง: การแยกฟิลด์
หาก IFS ไม่มีอักขระช่องว่างช่องว่างจะรวมอยู่ในฟิลด์:
$ ( IFS=',' x='one , two,three'; printf "<%s>\n" $x )
<one >
< two>
<three>
หาก IFS มีทั้งช่องว่างและเครื่องหมายจุลภาคดังนั้นลำดับของช่องว่างตามด้วยเครื่องหมายจุลภาคตามด้วยลำดับของช่องว่างจะถือว่าเป็นตัวคั่นเดียว:
$ ( IFS=' ,' x='one , two,three'; printf "<%s>\n" $x )
<one>
<two>
<three>
ลำดับของเครื่องหมายจุลภาคถูกตีความว่าเป็นลำดับของฟิลด์ว่าง:
$ ( IFS=' ,' x='one,,,two,three'; printf "<%s>\n" $x )
<one>
<>
<>
<two>
<three>
ตัวอย่าง: ช่องว่างนำหน้าและต่อท้าย
หาก IFS ไม่มีช่องว่างดังนั้นช่องว่างนำหน้าและต่อท้ายใด ๆ จะถูกเก็บไว้ในฟิลด์:
$ ( IFS=',' x=' one , two,three ,'; printf "<%s>\n" $x )
< one >
< two>
<three >
หาก IFS มีช่องว่างดังนั้นลำดับชั้นนำหรือส่วนท้ายของช่องว่างจะถูกลบออก:
$ ( IFS=' ,' x=' one , two,three ,'; printf "<%s>\n" $x )
<one>
<two>
<three>