Declarando Varíavel utilizando variável [RESOLVIDO]

1. Declarando Varíavel utilizando variável [RESOLVIDO]

Sandro Alves
gleenbr

(usa Ubuntu)

Enviado em 17/04/2017 - 16:32h

Estou aprendendo a desenvolver scripts, estou com uma video aula e exercitando algumas coisas, embarrei em um exercício que me propus por conta de sintaxe. Eu preciso que o valor de uma variável seja utilizado para compor o nome de outra variável. Nesse caso simples eu preciso ler uma quantidade de valores e gravar em variáveis específicas esses valores, simulando um vetor, e depois escrever de forma inversa à digitação. A lógica deu certo, mas ele não reconhece a variável. ;/ Segue o que fiz, se alguém puder me ajudar.

#/bin/bash

echo "Digite a quantidade de valores a serem lidos"
read limite

for (( i = 1; i <= $limite; i++ ))
do
echo "Digite o "$i"° valor"
read var$i
done
for (( i = $[$i-1]; i > 0; i=$[$i-1] ))
do
echo "O "$i"° valor digitado foi" $var$i
done



  


2. Re: Declarando Varíavel utilizando variável

Perfil removido
removido

(usa Nenhuma)

Enviado em 17/04/2017 - 22:11h

gleenbr escreveu:

Estou aprendendo a desenvolver scripts, estou com uma video aula e exercitando algumas coisas, embarrei em um exercício que me propus por conta de sintaxe. Eu preciso que o valor de uma variável seja utilizado para compor o nome de outra variável. Nesse caso simples eu preciso ler uma quantidade de valores e gravar em variáveis específicas esses valores, simulando um vetor, e depois escrever de forma inversa à digitação. A lógica deu certo, mas ele não reconhece a variável. ;/ Segue o que fiz, se alguém puder me ajudar.

#!/bin/bash

echo "Digite a quantidade de valores a serem lidos"
read limite

for (( i = 1; i <= $limite; i++ ))
do
echo "Digite o "$i"° valor"
read var$i
done
for (( i = $[$i-1]; i > 0; i=$[$i-1] ))
do
echo "O "$i"° valor digitado foi" $var$i
done



O erro está em var$i porque em BASH usa-se a sintaxe var[$n] para vetores, como var[4]=5 ou var[$n]=4 com $n sendo valor numérico.

Para exibir o valor da posição do vetor usa-se ${var[4]} ou ${var[$n]} em atribuições ou em comandos como echo.

Lembrando que o vetor começa em 0. ${var[0]}.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



3. Obrigado

Sandro Alves
gleenbr

(usa Ubuntu)

Enviado em 19/04/2017 - 10:50h

listeiro_037 escreveu:

gleenbr escreveu:

Estou aprendendo a desenvolver scripts, estou com uma video aula e exercitando algumas coisas, embarrei em um exercício que me propus por conta de sintaxe. Eu preciso que o valor de uma variável seja utilizado para compor o nome de outra variável. Nesse caso simples eu preciso ler uma quantidade de valores e gravar em variáveis específicas esses valores, simulando um vetor, e depois escrever de forma inversa à digitação. A lógica deu certo, mas ele não reconhece a variável. ;/ Segue o que fiz, se alguém puder me ajudar.

#!/bin/bash

echo "Digite a quantidade de valores a serem lidos"
read limite

for (( i = 1; i <= $limite; i++ ))
do
echo "Digite o "$i"° valor"
read var$i
done
for (( i = $[$i-1]; i > 0; i=$[$i-1] ))
do
echo "O "$i"° valor digitado foi" $var$i
done



O erro está em var$i porque em BASH usa-se a sintaxe var[$n] para vetores, como var[4]=5 ou var[$n]=4 com $n sendo valor numérico.

Para exibir o valor da posição do vetor usa-se ${var[4]} ou ${var[$n]} em atribuições ou em comandos como echo.

Lembrando que o vetor começa em 0. ${var[0]}.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



Muito obrigado S2.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts