繁体   English   中英

bash:在关联数组中使用变量

[英]bash: using variables in the assosiative arrays

在我的 bash 脚本中,我有一个包含两个元素的列表

prot_list=( sars3CLpro 229e3CL )

然后是几个关联数组,将它们都与其他一些变量相关联:

declare -A search_pattern1=(
    ["sars3CLpro"]="GLU 166 N"
    ["229e3CL"]="GLU 165 N"
)

declare -A search_pattern2=(
    ["sars3CLpro"]="HIE 163"
    ["229e3CL"]="HIE 162"

)

如何在关联数组中使用第一个列表中的元素(如 prot_list[0]、prot_list[1]),从而避免在同一脚本中第二次指示“sars3CLpro”和“229e3CL”?

您甚至可以在关联数组索引内使用数组索引语法:

declare -A search_pattern2=(
    ["${prot_list[0]}"]="HIE 163"
    ["${prot_list[1]}"]="HIE 162"
)

正如man bash告诉我们的那样,bash 中的数组从 0 开始索引:

索引数组使用整数(包括算术表达式)引用并且从零开始

或者您可以在循环中填充关联数组:

declare -A search_pattern1
values1=('GLU 166 N' 'GLU 165 N')
for i in 0 1 ; do
    search_pattern1["${prot_list[i]}"]=${values1[i]}
done

declare -A search_pattern2
values2=('HIE 163' 'HIE 162')
for i in 0 1 ; do
    search_pattern2["${prot_list[i]}"]=${values2[i]}
done

不幸的是,bash 缺少将值列表分配给键列表的语法,这与 Perl 不同,您可以在其中执行

    @search_pattern1{@prot_list} = @values1;

暂无
暂无

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

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