Ale*_*ill 5 arrays bash stdout quoting
我在从标准输出中形成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"
Run Code Online (Sandbox Code Playgroud)
我相信所发生的事情是,"foo和bar"被认为是标准输出单独项目,但目标是巩固这些物品放入一个数组.
显然,我可以编写一个小循环来将这些术语合并为一个,但我想知道有一个更优雅的解决方案吗?
编辑: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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |