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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值