Construa o novo array do antigo:
MIN=33285268
declare -A BRAMFRACS
for key in "${!BAMREADS[@]}"; do
BRAMFRACS[$key]=$(( ${BAMREADS[$key]} / MIN ))
done
Comentários no seu código:
-
Seu primeiro código sugerido não funciona, pois copia os valores do array associativo para o novo array. Os valores obtêm automaticamente as chaves 0, 1 e 2, mas as chaves originais não são copiadas. Você precisa copiar a chave da matriz pela chave, como mostrei acima. Dessa forma, você atribui o valor desejado à chave correta.
-
Seu segundo código sugerido contém um erro de sintaxe, pois possui espaços em torno de
=
em uma atribuição. É aí que os erros que você vê vêm.variable = value
é interpretado como "o comandovariable
executado com os operandos=
evalue
". -
Se você deseja iterar sobre um conjunto de nomes de caminho, não use
ls
. Em vez disso, basta fazerfor pathname in "$BAMFILES"/*bam; do
. -
Cite suas expansões de variáveis.
-
Considere usar
printf
em vez deecho
para gerar dados variáveis.
Relacionados: