1. 程式人生 > >linux shell程式設計之利用環境變數IFS自定義分隔符

linux shell程式設計之利用環境變數IFS自定義分隔符

預設情況下,bash shell將空格符、製表符、換行符看作是欄位分隔符,如果遇到這些字元,bash shell就會認為字元後是一個新的欄位,這就帶來一種困擾:如果我們想處理包含空格、製表符、換行符的字元就會有麻煩了。bash提供了一種自定義分隔符的機制:環境變數IFS定義了當前的分隔符,我們可以通過改變環境變數IFS的值,改變分隔符。

$ 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 
本例中將分隔符定義為'\n',這樣再遇到空格,也不會分隔欄位。
$ 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,用完之後,最好恢復原來的值。