2
我知道read
命令将IFS中的字符分割输入。因此,如果我将IFS设置为空格,那么输入到read
命令时将使用空格作为分隔符。如下所示。IFS中的空白与IFS中的非空白之间的行为差异
[[email protected] ~]$ IFS=" "
[[email protected] ~]$ read a b c
foo bar baz qux
[[email protected] ~]$ echo "$a"
foo
[[email protected] ~]$ echo "$b"
bar
[[email protected] ~]$ echo "$c"
baz qux
我期待,如果我做出改变IFS到非空白字符,也就是说,一个冒号和我输入使用冒号分隔符为,应该有任何变化。但事实证明这是错误的。例如,在下面的输出中,echo "$a"
为空。为什么?
[[email protected] ~]$ IFS=:
[[email protected] ~]$ read a b c
:foo:bar:baz:qux
[[email protected] ~]$ echo "$a"
[[email protected] ~]$ echo "$b"
foo
[[email protected] ~]$ echo "$c"
bar:baz:qux
[[email protected] ~]# echo $c
bar baz qux
又为何的echo $c
输出不包含冒号?