Matemática no Shell [RESOLVIDO]

1. Matemática no Shell [RESOLVIDO]

Glauco
glp40hs

(usa CentOS)

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

Olá pessoal!

Estou tendo dificuldade em usar o shell script para gerar dados numéricos.

O meu script é o seguinte:

#! /bin/sh

echo "============="
echo "usando while!"
echo "============="
i=0
while [ "$i" -le 2 ];
do
echo "$i"
teste=`bc -l << -end
"teste$i"
end`
i=$((i+1))
echo "i=$i e teste=$teste"
done

exit

Porém, a saída é:

=============
usando while!
=============
0
(standard_in) 1: syntax error
i=1 e teste=teste0
1
(standard_in) 1: syntax error
i=2 e teste=teste1
2
(standard_in) 1: syntax error
i=3 e teste=teste2

Gostaria de saber onda há o erro de sintaxe?


Obrigado pela ajuda!



  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

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

olha so... parece q isso é um exercicio de facul/curso e essas porcarias não fazem mto sentido... nao sei o q ensinam hoje em dia, mas no meu tempo (rsrs com coisa que estudei informatica algum dia) existia algo chamado algoritmo...

explica ai o seu.. me parece que ta tudo virado no avesso, nao sei o q vc pretende... experimenta esse codigo:

i=0
while [ $i -lt 10 ]; do
echo $i
i=$((i + 1))
done

o que isso faz? inicia em 0 e imprime $i até ele chegar a 9, q é o último true < 10. É isso assim que vc quer?

{{{
teste=`bc -l << -end
"teste$i"
end`
}}}
QUE ISSO???

viu, da uma lida em "man bash", Sir Hack-a-lot... E tem um monte de manuais, etc na rede que vc pode fica mais interado de shell... (em pt_BR)

acho que vc precisa aprender sobre o comando "expr"... assunta isso e postai.


3. RESOLVI + ou -

Glauco
glp40hs

(usa CentOS)

Enviado em 08/11/2009 - 09:49h

Caro, VFS.

Coloquei o loop de maneira simplista. Mas o que eu desejava mesmo era fazer um laço com ponto flutuante. Por exemplo:

i=0
while [ "$i" -le 2 ];
do
echo "$i"
teste=`bc -l << -end
$i*0.1
end`
i=$((i+1))
echo "i=$i e teste=$teste"
done

Resolvi meu erro colocando a crase de fechamento em uma linha isolada. Assim:

i=0
while [ "$i" -le 2 ];
do
echo "$i"
teste=`bc -l << -end
$i*0.1
end
`
i=$((i+1))
echo "i=$i e teste=$teste"
done

Esta forma `bc -l ...` se faz necessária qdo queremos fazer operações com ponto flutuante no shell, pois me parece que ele não faz operações com pt flututante.

Pois bem, consegui domar o shell, mas não o programa(SEISMIC UN*X, ou SU) que pega os dados da variável "teste". Acontece que com o segundo laço o SU não consegue lê, mas com o primeiro laço fica tudo Ok, porém fica dando uma mensagem de erro no shell. Por que eu não sei.

Mas VFS, agradeço a atenção dispensada


4. Re: Matemática no Shell [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/11/2009 - 10:48h

ainda estou boiando, porque a unica matematica que eu sei fazer e gosto, é de juros a MAIS...rsrs

mas como voce explicou um pouco e eu tenho a pretensao de não ser muito burro, fui dar uma olhada e achei isso aqui, veja se ajuda:

http://www.linuxjournal.com/content/floating-point-math-bash

http://www.novell.com/coolsolutions/tools/17043.html

[]s






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts