內部字段分隔符(Internal Field Separator,IFS)是shell腳本中的一個重要概念。在處理文本數據時,它可是相當有用。我們將會討論把單個數據流劃分成不同數據元素的定界符。內部字段分隔符是用於特定用途的定界符。IFS是存儲定界符的環境變量。它是當前shell環境使用的默認定界字符串。
實例1:
1 data="name,sex,rollno,location" 2 #我們可以使用IFS讀取變量中的每一個條目 3 oldIFS=$IFS 4 IFS="," 5 for item in $data;do 6 echo Item: $item 7 done 8 IFS=$oldIFS 輸入如下: Item: name Item: sex Item: rollno Item: location
IFS的默認值爲空白字符(換行符、製表符或者空格)。
當IFS被設置爲逗號時,shell將逗號解釋成一個定界符,因此變量$item在每次迭代中選取由逗號分隔的字串作爲變量值。
如果沒有IFS設置成",",那麼上面的腳本會將全部數據作爲單個字符串打印出來。
實例2:
1 #!/bin/bash 2 line="root:x:0:0:root:/root:/bin/bash" 3 oldIFS=$IFS; 4 IFS=":" 5 count=0 6 for item in $line;do 7 [ $count -eq 0 ] && user=$item; 8 [ $count -eq 6 ] && shell=$item; 9 let count++ 10 done; 11 IFS=$oldIFS 12 echo $user\'s shell is $shell; 輸出爲: root's shell is /bin/bash