內部字段分隔符(Internal Field Separator,IFS)是shell腳本編程中的一個重要概念。在處理
文本數據時,它的做用可不小。
做爲分隔符,IFS有其特殊用途。它是一個環境變量,其中保存了用於分隔的字符。它是當
前shell環境使用的默認定界字符串。咱們能夠查看$IFS這個變量,從而看出這個分隔符。node
[root@dns-node2 tmp]# echo $IFS
考慮一種情形:咱們須要迭代一個字符串或逗號分隔型數值(Comma Separated Value,CSV)
中的單詞。若是是前者,可使用 IFS=" " ;若是是後者,則使用 IFS="," 。shell
[root@dns-node2 tmp]# cat testIFS.sh #!/bin/bash data="name,age,sex,telphone_number,location" oldIFS=$IFS IFS=, for i in $data do echo item: $i done IFS=$oldIFS [root@dns-node2 tmp]# sh testIFS.sh item: name item: age item: sex item: telphone_number item: location
以上就是沒有使用awk來作指定分隔符,直接更改IFS來切分字符串,厲害吧。
接下來看看下面下面例子:編程
[root@dns-node2 tmp]# cat testIFS2.sh #!/bin/bash line="root:x:0:0:root:/root:/bin/bash" IFS=":" for i in $line do echo $i done [root@dns-node2 tmp]# bash testIFS2.sh root x 0 0 root /root /bin/bash
可使用echo 來輸出序列,例以下面的數據:bash
[root@dns-node2 tmp]# echo {1..500} [root@dns-node2 tmp]# echo {a..z} [root@dns-node2 tmp]# echo {A..z}