Concatene uma variável no final de outra variável ou string no Bash

0

Eu preciso criar muitas variáveis que começam com "precip" seguidas por uma string dinâmica que é uma variável de leitura. Eu li essa variável em, digamos, seu "1971" e então eu a aumentei 5 vezes para criar cinco ou mais variáveis abrangendo o intervalo de 1971, 1976, 1981, etc. Eu preciso acrescentar cada uma dessas variáveis ( denominado yr1, yr2, yr3 ...) para a variável "precip".

Como exemplo, em vez das variáveis codificadas encontradas abaixo:

precip1971="pr_"$reg"_"$glob"_1971010103.nc"  
precip1976="pr_"$reg"_"$glob"_1976010103.nc"
precip1981="pr_"$reg"_"$glob"_1981010103.nc"
precip1986="pr_"$reg"_"$glob"_1986010103.nc"
precip1991="pr_"$reg"_"$glob"_1991010103.nc"
precip1996="pr_"$reg"_"$glob"_1996010103.nc"

Eu gostaria de algo como (saber isso abaixo está errado):

precip+yr1="pr_"$reg"_"$glob"_1971010103.nc"  
precip+yr2="pr_"$reg"_"$glob"_1976010103.nc"
precip+yr3="pr_"$reg"_"$glob"_1981010103.nc"
precip+yr4="pr_"$reg"_"$glob"_1986010103.nc"
precip+yr5="pr_"$reg"_"$glob"_1991010103.nc"
precip+yr6="pr_"$reg"_"$glob"_1996010103.nc"

para que precip + yr1 seja igual a uma variável denominada precip1971, precip + yr2 é igual a uma variável denominada precip1976 e assim por diante.

Eu encontrei maneiras de concatenar os valores de duas variáveis, mas não uma nova variável com o valor de uma variável existente.

Existe uma maneira de fazer isso no Bash?

Obrigado.

    
por traggatmot 11.02.2015 / 05:31

1 resposta

3

Você pode usar eval para avaliar a atribuição da variável. Abaixo está um exemplo de programa relacionado ao seu cenário.

#!/bin/bash

year=1971

for ((i=0; i<=10; i++))
do
    eval precip${year}="pr_${reg}_${glob}_1971010103.nc" 
    ((year+=5))
done

Aqui, a instrução eval avalia a variável precip${year} to precip1971 e assim por diante.

    
por Kannan Mohan 11.02.2015 / 06:04