Pular para o conteúdo

Soma [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Soma [RESOLVIDO]

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.

Responder tópico

2. Re: Soma [RESOLVIDO]

Melhor resposta

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]

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

Alguém?

4. Re: Soma [RESOLVIDO]

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]

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]

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]

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.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder