5

これは私の$a出力です:

[root@node1 ~]# echo "${a}"
/dev/vdc1 /gfs1
/dev/vdd1 /elastic
mfsmount /usr/local/flytxt

fsmountsこれらを、最初の列をキーとして、2 番目の列を値として連想配列に格納する必要があります。
これはそのための私のコードです:

declare -A fsmounts
echo "$a" | while read i ; do key=$(echo "$i" | awk '{print $1}'); value=$(echo "$i" | awk '{print $2}');fsmounts[$key]=$value;  done;

しかし、ループの外で印刷しようとすると

[root@node1 ~]# echo ${fsmounts[/dev/vdb1]}

ブランクは出力です。連想配列 fsmounts は実際には値を格納していないと思います。私を助けてください。

fsmounts[$key]しかし、実際にはループ内でエコーすることができます。これを参照してください:

echo "$a" | while read i ; do key=$(echo "$i" | awk '{print $1}'); value=$(echo "$i" | awk '{print $2}');fsmounts[$key]=$value; echo ${fsmounts[$key]};  done;
/gfs1
/elastic
/usr/local/flytxt
4

1 に答える 1