繁体   English   中英

Bash-使用循环填充关联数组

[英]Bash- populate an associative array using a loop

所以我有这个要输入和关联数组:

47 SPRINGGREEN2
48 SPRINGGREEN1
49 MEDIUMSPRINGGREEN
50 CYAN2
51 CYAN1
52 DARKRED
53 DEEPPINK4

它是bash脚本的一部分。 我正在寻找一种方法来制作一个关联数组,所以它看起来像

    declare -A cols=( [SPRINGGREEN2]="0;47"...[DEEPPINK4]="0;53" )

我可以手动轻松地做到这一点。

但我想使用一个for循环来填充数组cols =([[KEY] =“ vALUE”)For循环将使用47、48、49 ... 53并将其放入VALUE字段,并将SPRINGGREEN2 ... DEEPPINK4放入关键字段。

我当时在考虑使用awk,但无法弄清楚我们如何隔离两个字段并使用每个条目来填充数组。

您打算从文件中读取并填充cols数组吗?

declare -a cols
while read num color; do
    cols[$num]=$color
done < file.txt
for key in "${!cols[@]}"; do printf "%s\t%s\n" "$key" "${cols[$key]}"; done

哦,另一方面,如果您已经有关联数组,并且还想要“反向”数组:

declare -a rev_cols
for color in "${!cols[@]}"; do
    rev_cols[${cols[$color]#*;}]=$color
done
for key in "${!rev_cols[@]}"; do printf "%s\t%s\n" "$key" "${rev_cols[$key]}"; done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM