字段分隔符和迭代器

內部字段分隔符(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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章