shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Dúvida para usar duas variáveis concatenadas em loop


From: Julio C. Neves
Subject: Re: [shell-script] Dúvida para usar duas variáveis concatenadas em loop for
Date: Wed, 28 Jan 2015 11:43:38 -0200

Fala Emmanuel,
veja se esse passo a passo resolve teu problema:

$ Var_01=10
$ Var_02=20
$ Var_90=90
$ echo $Var_{01..90}
10 20 90
$ echo $Var_{01..90} | tr ' ' +
10+20+90
$ echo $Var_{01..90} | tr ' ' + | bc
120

Abcs,
Julio
@juliobash
P
róximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 09 a 13/03/15
São Paulo 4Linux 23 a 27/03/15
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 27 de janeiro de 2015 20:00, Emmanuel Oliveira address@hidden [shell-script] <address@hidden> escreveu:
 

Pessoal, em primeiro lugar agradeço imensamente a rapidez e ajuda nas respostas.

Eu quis simplificar a dúvida, para facilitar a explicação, mas parece que é mais efetivo dizer o que realmente estou tentando fazer.

Tenho 100 variáveis, criadas de VAR_01  até VAR_100 por um outro script. 

Preciso somar o valor final delas. Só isso .....

Acho que talvez eu esteja complicando...

O que estava tentando fazer era :

--------------------------------------------------------------------------
!/bin/bash

# eu preciso calcular a soma de todas as variáveis, de VAR_01  a VAR_100


for i in $(seq 1 100)
do

CONTADOR=`echo "$CONTADOR + $VAR_$i" | bc`     


done

--------------------------------------------------------------------------

Acho que eu acabei complicando a minha dúvida e a resolução.

Alguma forma mais prática de resolver essa soma ?

Muito obrigado mesmo Fernando, Júlio e Gustavo.

Emmanuel






Em Terça-feira, 27 de Janeiro de 2015 18:44, "'Gustavo S. L.' address@hidden [shell-script]" <address@hidden> escreveu:


 
E se quiser manter essa ordem de uma variável abaixo da outra, pode fazer:

#!/bin/bash
variavel[1]="1"
variavel[2]="-3"
variavel[3]="8"
variavel[4]="-1"
variavel[5]="0"
for i in ${variavel[*]}
do
echo $i
done


Em 27 de janeiro de 2015 19:30, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 
Boa tarde Emmanuel,
Se vc fizer:
$ VAR_=10
A saída do seu script sera101, 102, ..., 105, isso pq em qq linguagem interpretada, a interpretação é da esquerda para a direita. Isso significa que a variável $VAR_ será resolvida em primeiro lugar e estará vazia.
Para evitar que isso ocorra, faça:
eval echo $VAR_$i
Em 27/01/2015 19:10, "Emmanuel Oliveira address@hidden [shell-script]" <address@hidden> escreveu:

 
Olá pessoal.

Desculpem a simplicidade da dúvida, mas sou meio iniciante no shell, e  realmente não estou conseguindo resolver. 

Já pesquisei no google, e realmente não estou achando a solução. 

Segue abaixo o script bem simples; ele é parte de um script maior, mas separei o que interessa:

-----------------------------------------------------
#!/bin/bash

VAR_1="-1"
VAR_2="1"
VAR_3="3"
VAR_4="-1"
VAR_5="8"

 
for i in $(seq 1 5)
do

    echo $VAR_$i

done

-----------------------------------------------------

o resultado é sempre esse :

./executa.sh

1
2
3
4
5

quando eu precisava que fosse : 

./executa.sh

-1
1
3
-1
8

em resumo, não está lendo a variável : $VAR_$i   como $VAR_1

Alguém poderia dar uma ajuda para resolver essa dúvida ?

Desde já, muito obrigado mesmo.

Emmanuel






reply via email to

[Prev in Thread] Current Thread [Next in Thread]