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
輸出不包含冒號?