Como somar variavel pra nunca terminar em 0 1 2 [RESOLVIDO]

1. Como somar variavel pra nunca terminar em 0 1 2 [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 04/06/2010 - 13:44h

Galera eis o problema resumido, tenho uma variavel que le a ID de um arquivo, pra criar um novo usuario soma 1 a este valor, porém nunca pode-se terminar em 0, 1 ou 2, ou seja a ultima ID é 9 a próxima deverá ser 13, 19 a próxima devera ser 23, depois 29 - 33 e por ai vai...
alguem tem alguma sugestão de como eu fazer? pensei com if, mas como os numeros são infinitos na minha ideia o script ficaria enorme e mesmo assim dependendo de quantas IDs ja tiver nao vou ter criado funções suficientes...

Grato!!


  


2. Re: Como somar variavel pra nunca terminar em 0 1 2 [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 05/06/2010 - 11:26h

Bem, se termina com 9 soma 4, caso contrário soma 1. É isso?

ID=198989
NOVA_ID=$((ID+1))
[[ $ID =~ '9$' ]] && NOVA_ID=$((ID+4))
echo $NOVA_ID

t+



3. Re: Como somar variavel pra nunca terminar em 0 1 2 [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 05/06/2010 - 13:25h

Daemonio, axo que +- isso, so q:
se termina com 9 soma 4
se termina com 0 soma 3
se termina com 1 soma 2
se termina com 2 soma 1

então pela lógica, é so eu criar as demais funçoes abaixo?

Valew []´s!


4. Re: Como somar variavel pra nunca terminar em 0 1 2 [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 06/06/2010 - 11:37h

Não deu certo não.. fiz um script pra testar assim:
#!/bin/sh
ID=$1
NOVA_ID=$((ID+1))
[[ $ID =~ '9$' ]] && NOVA_ID=$((ID+4))
[[ $ID =~ '0$' ]] && NOVA_ID=$((ID+3))
[[ $ID =~ '1$' ]] && NOVA_ID=$((ID+2))
[[ $ID =~ '2$' ]] && NOVA_ID=$((ID+1))
echo $NOVA_ID

então chamo:
#./teste 15 (por exemplo, mais da erro com qualquer numero)
router# ./teste 15
[[: =~: unknown operand
[[: =~: unknown operand
[[: =~: unknown operand
[[: =~: unknown operand
16
router#



5. Re: Como somar variavel pra nunca terminar em 0 1 2 [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 06/06/2010 - 14:14h

Qual shell você está usando? É o sh puro? Bem, aqui tô usando o bash 3 e seu script rodou sem erros. =D

Parece que o shell que você está utilizando não reconhece o operador =~.

Uma maneira geral que funcionaria em quase todos os shells seria usar o grep para verificar o último dígito do número.

Exemplo:

if echo $ID | grep '9$'
then
NOVA_ID=$((ID+4)) ;
fi

e assim por diante.

Espero ter ajudado.
t+


6. Re: Como somar variavel pra nunca terminar em 0 1 2 [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 06/06/2010 - 14:45h

Consegui, segue a maneira como fiz para caso alguem precise:

#!/bin/sh
ID=$1
TEST_VAR=`echo $ID | sed 's/.*\(.\)$/\1/g'`
if [ $TEST_VAR = '9' -o $TEST_VAR = '0' -o $TEST_VAR = '1' ]; then
NOVA_ID=$((ID+4))
else
NOVA_ID=$((ID+1))
fi
echo $NOVA_ID

Simples =]
Obrigado pela ajuda Daemonio!


7. Re: Como somar variavel pra nunca terminar em 0 1 2 [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 06/06/2010 - 15:05h

Detonou!! t+






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts