Pular para o conteúdo

Shell Script [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Shell Script [RESOLVIDO]

Enviado em 10/02/2009 - 13:45h

Porque a soma nao funciona na linha comentada? e na expressão com essas aspas em italico funciona?

#! /bin/bash
echo "-------------------------------------------'";
n1=50;
n2=100;

#soma=$($n1 * $n2) ; #não funciona
#soma=$n1 * $n2 ; #não funciona
#soma=$[$n1 * $n2] ; #não funciona


soma=`expr $n1 + $n2 ` #funciona blz

echo $soma;

echo "-------------------------------------------'";

Responder tópico

2. Re: Shell Script [RESOLVIDO]

Enviado em 10/02/2009 - 14:16h

Pelo simples fato de que linhas que iniciam com comentários, são ignoradas pelo shell. Ex.:

# echo "O shell irá me ingnorar!"
echo "O shell não me ignorou."

3. Re: Shell Script [RESOLVIDO]

Enviado em 10/02/2009 - 14:41h

Sim, coloquei comentada de proposito.

O que eu quero saber na verdade é porque o meu shell não aceita nenhuma dessas sitaxes que estão comentadas, sendo que alguns exemplos dessa forma.

4. Re: Shell Script [RESOLVIDO]

Enviado em 10/02/2009 - 14:42h

ops, só corrigindo:
"sendo que eu vi alguns exemplos dessa forma"

5. Re: Shell Script [RESOLVIDO]

Enviado em 10/02/2009 - 14:50h

Ops! Não havia entendido direito a tua pergunta! Desculpe...

Então vamos lá: Para realizar cálculos aritméticos você deve utilizar uma dessas notações:

$((operação))

ou

$[operação]

Ah, essa última notação dificilmente é utilizada atualmente. Portanto alguns 'shell interpreters' não a reconhecem mais!

6. Re: Shell Script [RESOLVIDO]

Enviado em 10/02/2009 - 15:04h

Sem problemas...
Foi dessa forma que eu tentei fazer:

soma=$($n1 * $n2) ; #não funciona

e

soma=$[$n1 * $n2] ; #não funciona

é necessário fazer algum typecast?

7. Re: Shell Script [RESOLVIDO]

Enviado em 10/02/2009 - 15:11h

Como eu disse acima, use parênteses duplos!

soma=$(($n1 * $n2))

E evite utilizar a notação '$[operação]', ela caiu em desuso.


8. Re: Shell Script [RESOLVIDO]

Enviado em 10/02/2009 - 15:13h

Agora sim!

Muito Obrigado!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder