linux shell程式設計之利用環境變數IFS自定義分隔符
阿新 • • 發佈:2018-12-30
預設情況下,bash shell將空格符、製表符、換行符看作是欄位分隔符,如果遇到這些字元,bash shell就會認為字元後是一個新的欄位,這就帶來一種困擾:如果我們想處理包含空格、製表符、換行符的字元就會有麻煩了。bash提供了一種自定義分隔符的機制:環境變數IFS定義了當前的分隔符,我們可以通過改變環境變數IFS的值,改變分隔符。
本例中將分隔符定義為'\n',這樣再遇到空格,也不會分隔欄位。$ cat test.txt apple pear banana orange $ cat test.sh #!/bin/bash ifs_old=$IFS IFS=$'\n' for val in `cat test.txt` do echo "n=$val" done IFS=$ifs_old $ ./test.sh n=apple pear banana orange
$ cat test.sh
#!/bin/bash
list="we:are:champion"
ifs_old=$IFS
IFS=$':'
for val in $list
do
echo "n=$val"
done
IFS=$ifs_old
$ ./test.sh
n=we
n=are
n=champion
在本例中,將分隔符定義為':',注意我們每次設定IFS前,儲存一下IFS,用完之後,最好恢復原來的值。