输出是
/ ext4
/boot ext2
tank zfs
Run Code Online (Sandbox Code Playgroud)
在每一行上,分隔符是一个空格.我需要一个关联数组,如:
"/" => "ext4", "/boot" => "ext2", "tank" => "zfs"
Run Code Online (Sandbox Code Playgroud)
怎么在bash中完成?
Joh*_*024 15
如果命令输出在文件中file
,则:
$ declare -A arr=(); while read -r a b; do arr["$a"]="$b"; done <file
Run Code Online (Sandbox Code Playgroud)
或者,您可以将数据直接从命令读cmd
入数组,如下所示:
$ declare -A arr=(); while read -r a b; do arr["$a"]="$b"; done < <(cmd)
Run Code Online (Sandbox Code Playgroud)
构造<(...)
是过程替换.它允许我们从命令读取就像我们从文件中读取一样.请注意,两者之间的空间<
是必不可少的.
您可以使用以下命令验证数据是否已正确读取declare -p
:
$ declare -p arr
declare -A arr='([tank]="zfs" [/]="ext4" [/boot]="ext2" )'
Run Code Online (Sandbox Code Playgroud)