如果有人问你,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文件的内容。

linuxif语句三种结构(Linux系统中的IFS内部字段分隔符)(1)

五爪神龙

鼓励的话语:难走的路要慢慢走,善良的心一定要时时有!

,