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

将命令的输出拆分为bash中的关联数组

发布时间:2020-12-15 18:25:15 所属栏目:安全 来源:网络整理
导读:输出是 / ext4/boot ext2tank zfs 在每一行上,分隔符是一个空格.我需要一个关联数组,如: "/" = "ext4","/boot" = "ext2","tank" = "zfs" 怎么在bash中完成? 如果命令输出在文件文件中,则: $declare -A arr=(); while read -r a b; do arr["$a"]="$b"; don
输出是
/     ext4
/boot ext2
tank  zfs

在每一行上,分隔符是一个空格.我需要一个关联数组,如:

"/" => "ext4","/boot" => "ext2","tank" => "zfs"

怎么在bash中完成?

如果命令输出在文件文件中,则:
$declare -A arr=(); while read -r a b; do arr["$a"]="$b"; done <file

或者,您可以将数据直接从命令cmd读取到数组中,如下所示:

$declare -A arr=(); while read -r a b; do arr["$a"]="$b"; done < <(cmd)

构造<(...)是过程替换.它允许我们从命令读取就像我们从文件中读取一样.注意两者之间的空间<是必不可少的. 您可以使用declare -p验证数据是否已正确读取:

$declare -p arr
declare -A arr='([tank]="zfs" [/]="ext4" [/boot]="ext2" )'

(编辑:李大同)

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

    推荐文章
      热点阅读