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
如何去掉数组中多余的空格元素?
最佳答案
继续注释,您可以在将值存储到数组之前测试空元素,也可以在 echo
时处理空值。坦率地说,后者更简单,例如
l="2->4->3"; IFS="->" read -a la <<< "$l"; \
for ((i = 0; i < ${#la[@]}; ++i)) do \
[ -n "${la[i]}" ] && echo ${la[$i]}; done
输出
2
4
3
关于arrays - 在 bash 中使用 IFS 单词分隔符将字符串按 'read' 拆分为数组如何生成额外的空格元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40011867/