linuxif语句三种结构(Linux系统中的IFS内部字段分隔符)
如果有人问你,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文件的内容。
五爪神龙
鼓励的话语:难走的路要慢慢走,善良的心一定要时时有!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com