Outra opção, uma vez que as variáveis já foram inicializadas:
for i in $SP{60..62}; do echo $i.txt; done
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.
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.