如果有人问你,Linux系统中的分隔符是什么?怎么查看当前的设置?
那么怎么回答呢?
这里就展开说明一下:
IFS是内部字段分隔符,在Linux shell里面还有awk的命令里面可以指定不同的分隔符。
IFS是一个局部变量,通过env| grep ^IFS是查看不到的。
需要直接使用set|grep ^IFS可以查看到。
一般结果是:
IFS=$' \t\n'
也就是空格、制表符、换行符组成的。通俗讲就是空格、回车加换行,IFS默认值为空白字符。
直接输出IFS是看不出来的时候,可以通过命令把它转化成二进制的方式就可以看到了。
命令是echo "$IFS"|od -b ,需要注意的是IFS变量必须照原样输出,把变量IFS放入双引号,以保留空格和换行符。
这样得到结果是0000000 040 011 012 012
040代表空格,011是Tab代表水平制表符,012是换行符\n。
这里最后一个012是因为echo默认会换行的。
现在举一个例子来说明一下:
cat text.txt
1
2
3
如果使用子shell的方式或者反引用的方式可以将命令的输入读入一个变量中,可以把它放入双引号中,以保留空格和换行符\n。
#! /bin/bash
oldifs=$IFS
IFS=$"\n"
for i in "$(</tmp/text.txt)"
do
echo $i
done
IFS=oldifs
这里首先把Linux系统默认的内部字段分隔符IFS 空格、制表符、换行赋值给变量oldifs,然后把当前Linux系统默认字段分隔符换成了\n换行符。然后逐行显示文件内容,最后再把默认的Linux系统内部字段分隔符还原成空格、制表符、换行符。
这样,会原样输出text.txt文件的内容。
五爪神龙
鼓励的话语:难走的路要慢慢走,善良的心一定要时时有!
,