Bu, içinde belgelenmiştir man bash
. IFS'de boşluk olmayan herhangi bir karakterin tek bir örneği, bir alanı sınırlar.
Gönderen man bash
:
Kabuk, IFS'nin her karakterine bir sınırlayıcı gibi davranır ve diğer genişletmelerin sonuçlarını bu karakterleri alan sonlandırıcıları olarak kullanarak kelimelere böler. IFS kaldırılırsa ya da değeri tam ise <space><tab><newline>
o zaman, dizileri varsayılan <space>
,
<tab>
ve <newline>
başında ve önceki açılımları sonuçlarına sonunda göz ardı edilir ve IFS karakter dizisi değil başında veya sonunda sınırlamayı hizmet eder kelimeler. IFS varsayılandan farklı bir değere sahipse, boşluk karakteri IFS (IFS boşluk karakteri) olduğu sürece, boşluk karakterleri boşluk, sekme ve satırsonu dizileri sözcüğün başında ve sonunda yok sayılır. ). IFS'de IFS boşluk olmayan herhangi bir karakter, bitişik IFS boşluk karakterleriyle birlikte bir alanı sınırlar. Bir dizi IFS boşluk karakteri de sınırlayıcı olarak ele alınır. IFS değeri null olursa, kelime ayırma gerçekleşmez. [Vurgu eklendi.]
Örnekler: alan bölme
IFS'de boşluk karakteri yoksa, boşluklara alanlara dahil edilir:
$ ( IFS=',' x='one , two,three'; printf "<%s>\n" $x )
<one >
< two>
<three>
IFS'nin hem boşlukları hem de virgülleri varsa, boşluk dizileri, ardından virgül ve ardından boşluk dizileri tek bir ayırıcı olarak ele alınır:
$ ( IFS=' ,' x='one , two,three'; printf "<%s>\n" $x )
<one>
<two>
<three>
Virgül dizileri boş alan dizileri olarak yorumlanır:
$ ( IFS=' ,' x='one,,,two,three'; printf "<%s>\n" $x )
<one>
<>
<>
<two>
<three>
Örnekler: öndeki ve sondaki boşluk
IFS boşluk içermiyorsa, önde gelen ve sondaki boşluklar alanların içinde tutulur:
$ ( IFS=',' x=' one , two,three ,'; printf "<%s>\n" $x )
< one >
< two>
<three >
IFS boşluk içeriyorsa, önde gelen veya sondaki boşluk dizileri kaldırılır:
$ ( IFS=' ,' x=' one , two,three ,'; printf "<%s>\n" $x )
<one>
<two>
<three>