数组 – 使用命令输出中的带引号的条目在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |