加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

数组 – 使用命令输出中的带引号的条目在Bash中创建数组

发布时间:2020-12-15 22:46:04 所属栏目:安全 来源:网络整理
导读:我在从标准输出中形成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和bar”被认为是标准输出中的单独
我在从标准输出中形成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和bar”被认为是标准输出中的单独项目,但目标是将这些项目合并为一个数组.

显然,我可以编写一个小循环来将这些术语合并为一个,但我想知道有一个更优雅的解决方案吗?

编辑:在我的代码中代替echo’1 2 3“foo bar”的内容是相当复杂的,但重点是我需要从这个表单的某个未知标准输出形成一个数组.

解决方法

xargs如此识别引号

mapfile -t a <<<"$(echo '1 2 3  "foo bar"' | xargs -n 1)"
printf "%sn" "${a[@]}"
1
2
3
foo bar

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读