我在从标准输出形成 bash 数组时遇到问题。我把它归结为这个最小的例子:
~$ a=($(echo '1 2 3 "foo bar"'))
~$ echo ${a[0]}
1
~$ echo ${a[1]}
2
~$ echo ${a[2]}
3
~$ echo ${a[3]}
"foo
~$ echo ${a[4]}
bar"
我相信正在发生的事情是"foo
and bar"
在标准输出中被视为单独的项目,但目标是将这些项目合并为数组的一个项目。
显然,我可以编写一个小循环来将这些术语合并为一个,但我想知道是否有更优雅的解决方案?
EDIT: 用什么代替echo '1 2 3 "foo bar"'
我的代码相当复杂,但重点是我需要从这种形式的一些未知标准输出形成一个数组.
xargs
识别引号所以
mapfile -t a <<<"$(echo '1 2 3 "foo bar"' | xargs -n 1)"
printf "%s\n" "${a[@]}"
1
2
3
foo bar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)