shell基礎知識7-字段分隔符與迭代器

什麼是內部字段分隔符

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

tips

可使用echo 來輸出序列,例以下面的數據:bash

[root@dns-node2 tmp]# echo {1..500}
[root@dns-node2 tmp]# echo {a..z}
[root@dns-node2 tmp]# echo {A..z}
相關文章
相關標籤/搜索