Variável da concatenação de variáveis [duplicado]

3

Acho que esta é uma pergunta bastante simples, mas não consigo fazer isso funcionar: Eu tenho uma lista inteira de variáveis, por exemplo:

SP60=OLA SP61=BYE SP62=TRT

Eu quero criar um loop para chamá-los no número específico da variável então pensei que uma solução curta poderia ser:

for i in {60..62}; do SP=$"SP$i"; echo $SP.txt; done

Eu esperava que o resultado fosse:

OLA.txt BYE.txt TRT.txt

mas eu recebo

SP60.txt...

Gostaria de saber se existe uma maneira simples de fazer isso.

    
por 8NellyF8 13.01.2017 / 12:05

2 respostas

2

Outra opção, uma vez que as variáveis já foram inicializadas:

for i in $SP{60..62}; do echo $i.txt; done
    
por 13.01.2017 / 12:20
4

Considere o seguinte script bash / ksh :

SP60="OLA"
SP61="BYE"
SP62="TRT"

for (( i = 60; i <= 62; ++i )); do
    typeset -n var="SP$i"
    printf 'SP%d = %s.txt\n' "$i" "$var"
done

Ele produzirá o seguinte:

SP60 = OLA.txt
SP61 = BYE.txt
SP62 = TRT.txt

Ele usa uma variável de referência de nome var (declarada usando declare -n em bash ou com typeset -n em bash e ksh ). Isso significa que, toda vez que você fizer uma referência, ele será expandido para o valor da variável que está referenciando.

    
por 13.01.2017 / 12:15