[英]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.