arrays - 在 bash 中使用 IFS 单词分隔符将字符串按 'read' 拆分为数组如何生成额外的空格元素?

标签 arrays bash ifs

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/

相关文章:

linux - 拆分文件内容并存储到数组中或通过分隔符遍历文件内容

Bash:按分隔符分割但保留分隔符

php - 按 ISO 日期对 PHP 数组进行排序

javascript - 从 Javascript 数组填充 HTML 表

macos - 如何修复终端在 OS X Lion 上不加载 ~/.bashrc

python - 用 python 改进 bash 脚本

linux - 用数字 bash 变量算术?

linux - Bash 不删除前导空格

ios - C 与 Swift 的互操作性

java - 对数组中大于输入值的数字求和