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

在bash中将命令的输出拆分为关联数组,bash,Bash,输出是 / ext4 /boot ext2 tank zfs 每行的分隔符都是一个空格。我需要一个关联数组,如: "/" => "ext4", "/boot" => "ext2", "tank" => "zfs" 在bash中是如何做到这一点的?如果命令输出在filefile中,则: $ declare -A arr=(); while read -r a b; do arr["$a"]="$b"; done <file 不幸的是,构造一点也没有。在bas

输出是

/     ext4
/boot ext2
tank  zfs
每行的分隔符都是一个空格。我需要一个关联数组,如:

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

在bash中是如何做到这一点的?

如果命令输出在file
file
中,则:

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

不幸的是,构造
一点也没有。在bash中,关联数组的键中不能有斜杠。你最终想要达到什么目的,所以我可以建议解决办法?@Wintermute,什么意思?当然可以,;键体中唯一无效的字符是NUL。你真的测试过这个声明吗?@CharlesDuffy
arr[/]=bar
对我来说在bash4.3上不起作用。也没有包含
/
的任何其他内容<代码>bash:/:语法错误:应为操作数(错误标记为“/”)
是错误。引用是没有用的。@charlesduff哦,我太蠢了,我的坏朋友。忘记了
声明-A
/不记得这是必要的。我现在就去站在角落里。哇,这简直让我大吃一惊,我一定要好好看看阵列。
$ declare -A arr=(); while read -r a b; do arr["$a"]="$b"; done < <(cmd)
$ declare -p arr
declare -A arr='([tank]="zfs" [/]="ext4" [/boot]="ext2" )'