目录

Shell指定分隔符

目录

为什么要指定换行符,我们看一个例子

#!/bin/bash

data="
a b c
d e f
"

for i in $data
do
  echo $i
done

输出的结果是:

a
b
c
d
e
f

因为系统默认把空格和换行都当作了分隔符。为了避免这种情况,我们可以手动指定分隔符:

#!/bin/bash

data="
a b c
d e f
"

IFS=$'\n'
for i in $data
do
  echo $i
done

这样打印出来的就是:

a b c
d e f

再看一个例子:

#!/bin/bash
a="aa,bb,cc,dd,ee"
for i in $a
do
    echo $i
done

输出为:
aa,bb,cc,dd,ee

我们想要的输出结果可能是这样

aa
bb
cc
dd
ee

可以修改成这样:

#!/bin/bash
oldIFS=$IFS        #定义变量为默认的IFS
IFS=,              #设置默认的分隔符
a="aa,bb,cc,dd,ee"
for i in $a
do
    echo $i
done
IFS=$oldIFS        #还原默认值

还原默认值这一步也可以不操作,具体看这个操作会不会影响到后面的shell命令。