小编mf9*_*f94的帖子

基于另一个关联数组制作关联数组

我制作了一个关联数组,如下所示。为了提供一些详细信息,键是指特定文件,因为我将在较大脚本的上下文中使用此数组(其中包含文件的目录将是 getopts 参数)。

declare -A BAMREADS
echo "BAMREADS array is initialized"

BAMREADS[../data/file1.bam]=33285268
BAMREADS[../data/file2.bam]=28777698
BAMREADS[../data/file3.bam]=22388955

echo ${BAMREADS[@]}  # Output: 22388955 33285268 28777698
echo ${!BAMREADS[@]} # Output: ../data/file1.bam ../data/file2.bam ../data/file3.bam
Run Code Online (Sandbox Code Playgroud)

到目前为止,这个数组的行为似乎符合我的预期。现在,我想基于这个数组构建另一个关联数组。具体来说:我的第二个数组将具有与第一个相同的键,但我想将这些值除以名为 $MIN 的变量。

我不确定以下哪种策略是最好的,而且我似乎无法使任何一种工作。

策略1:复制数组并修改数组?

MIN=33285268

declare -A BRAMFRACS
echo "BAMFRACS array is initialized"
BAMFRACS=("${BAMREADS[@]}")

echo ${BAMFRACS[@]}  # Output: 22388955 33285268 28777698
echo ${!BAMFRACS[@]} # Output: 0 1 2
Run Code Online (Sandbox Code Playgroud)

这不是我想要的钥匙。即使它有效,我也需要对所有值执行我提到的操作。

策略 2:在循环第一个数组时构建第二个数组。

MIN=33285268

declare -A BRAMFRACS
echo "BAMFRACS array is initialized"

for i in $(ls $BAMFILES/*bam)
do
    echo $i
    echo …
Run Code Online (Sandbox Code Playgroud)

bash associative-array

3
推荐指数
2
解决办法
4522
查看次数

标签 统计

associative-array ×1

bash ×1