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,用完之后,最好恢复原来的值。

你可能感兴趣的:(linux运维)