输出是
/ ext4
/boot ext2
tank zfs
每行的分隔符是一个空格。我需要一个关联数组,例如:
"/" => "ext4", "/boot" => "ext2", "tank" => "zfs"
这在 bash 中是如何完成的?
如果命令输出在文件中file
, then:
$ 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)
构造<(...)
is 过程替代。它允许我们从命令中读取数据,就像从文件中读取数据一样。注意两者之间的空间<
是必不可少的。
您可以使用以下命令验证数据是否已正确读取declare -p
:
$ declare -p arr
declare -A arr='([tank]="zfs" [/]="ext4" [/boot]="ext2" )'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)