【发布时间】:2017-02-22 00:55:30
【问题描述】:
IFS 只有一个字符,它工作正常:
shell@kernel: ~> l="2.4.3"; IFS="." read -a la <<< "$l"; for ((i = 0; i < ${#la[@]}; ++i)) do echo ${la[$i]}; done;
2
4
3
虽然 IFS 有两个字符,但生成了额外的空格元素
shell@kernel: ~> l="2->4->3"; IFS="->" read -a la <<< "$l"; for ((i = 0; i < ${#la[@]}; ++i)) do echo ${la[$i]}; done;
2
4
3
shell@kernel: ~> l="2..4..3"; IFS=".." read -a la <<< "$l"; for ((i = 0; i < ${#la[@]}; ++i)) do echo ${la[$i]}; done;
2
4
3
如何去掉数组中多余的空格元素?
【问题讨论】:
-
IFS="->"指定"-"和">"的字段分隔符。在$l中的"->"之间没有nothing,所以你得到一个空元素。 -
换句话说,
IFS不是 a 字段分隔符。它是单字符字段分隔符的列表。