Soma [RESOLVIDO]

1. Soma [RESOLVIDO]

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 28/11/2013 - 14:56h

Boa tarde, tenho um script aqui de verificação de conexão de dois links que quero colocar tudo em uma função os 2 testes mas estou tendo problema segue o link de apenas uma:

for x in $(seq 5)
do
if ! ping -c 1 $GW1 > /dev/null;
then
linktest1=$(($linktest1 - 1))
else
linktest1=$(($linktest1 + 1))
fi
sleep 1
done
if [ $linktest1 -eq $Qtdtestlink ] || [ $linktest1 -gt $Qtdtestlink ];then
Escalalink1=$(cat /scripts/conexao/escalalink1.txt)
Escalalink1=$(($Escalalink1 + 1))
echo "$Escalalink1" > /scripts/conexao/escalalink1.txt
if [ $Escalalink1 -eq $QtdEscala ] || [ $Escalalink1 -gt $QtdEscala ];then
link1=1; # 1 para Ativo
else link1=0; # Caso o link ainda nao esteja estabilizado
fi
else
link1=0; # 0 para Inativo
echo "0" > /scripts/conexao/escalalink1.txt #Caso o link caia reseta o status voltando apenas apos 3 testes positivos
fi


oque eu quero é que onde está fixo como valor 1 mude conforme o chamado no momento ate 2
o problema é na soma tentei algo assim:
linktest$var=$(($linktest$var + 1)) onde a variavel $linktest$var deveria representar: linktest1 e linktest2 conforme o tipo é necessário pois o 1 ou 2 é que vai definir o gateway por exemplo que eu defini para o 2. esse Scrip já funciona de forma separada mas quero colocar em função por ex para se forem mais links.



  


2. MELHOR RESPOSTA

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 02/12/2013 - 18:23h

viniciusmathias escreveu:

rei_astro escreveu:

O correto é assim:

linktest$var=$((linktest1+1))

Sem o $ dentro dos parênteses. Não sei se funciona a concatenação de strings:

linktest$var=$((linktest$var+1))

Mas poderia fazer uma variável:

temp=$linktest$var

Depois faz a soma:

linktest$var=$((temp+1))


Tentei mas não deu e em um simples teste onde faço:
var=a;
linktest$var=3;

não funciona tbem.


Então terá que fazer um array:

link=()
var1=0
var2=1
link[$var1]=3
link[$var2]=6
echo ${link[$var1]}
echo ${link[$var2]}

3. Re: Soma [RESOLVIDO]

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 02/12/2013 - 12:08h

Alguém?



4. Re: Soma [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 02/12/2013 - 12:49h

O correto é assim:

linktest$var=$((linktest1+1))

Sem o $ dentro dos parênteses. Não sei se funciona a concatenação de strings:

linktest$var=$((linktest$var+1))

Mas poderia fazer uma variável:

temp=$linktest$var

Depois faz a soma:

linktest$var=$((temp+1))


5. Re: Soma [RESOLVIDO]

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 02/12/2013 - 14:07h

rei_astro escreveu:

O correto é assim:

linktest$var=$((linktest1+1))

Sem o $ dentro dos parênteses. Não sei se funciona a concatenação de strings:

linktest$var=$((linktest$var+1))

Mas poderia fazer uma variável:

temp=$linktest$var

Depois faz a soma:

linktest$var=$((temp+1))


Tentei mas não deu e em um simples teste onde faço:
var=a;
linktest$var=3;

não funciona tbem.


6. Re: Soma [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 03/12/2013 - 01:24h

Array é uma saída interessante. Mas outra possibilidade é aprender a usar o comando eval.

$ a=b
$ b=1
$ eval "echo \$$a"
1



7. Re: Soma [RESOLVIDO]

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 03/12/2013 - 10:19h

Eval eu não conhecia, acho que com array vai ser melhor para oque eu preciso, já tinha visto alguma coisa antes mas não estava sabendo iniciar ele no linux.
Vou ver aqui e dou a resposta.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts