Publicada por xunil em 15/06/2007 - 13:29h:
* xunil usa Debian

Boa Tarde!

Sou novato em programação bash linux mas estou tentando aprender sozinho alguma coisa...
Estava tentando testar o comando bc para calculos.
Gostaria de criar um contador para incrementar 0,1 a 0,1 uma variável.

#! /bin/sh
# Incr 0,1
i=0
j=10
while [ $i -ne $j ];
do

i=`echo "$i+0.1"|bc -l`

echo $i
done;

Tenho esse codigo até ao momento.
Sei que o i está sendo bem preenchido o meu problema está no while penso, me está dando o seguinte output ao executar:
.1
./testesbc.sh: line 5: [: .1: integer expression expected


Agradeço todas as ajudas!
Irei dando notícias!!!

  
 
Resposta de removido em 15/06/2007 - 17:56h:
* removido usa Nenhuma
* removido tem conceito: nenhum voto.
 


#! /bin/sh
# Incr 0,1
i=0
j=10
while [ $i -ne $j ];
do

i=`echo $(($i+0.1)) | bc -l`

echo $i
done;

 
Resposta de bryan em 16/06/2007 - 20:10h:
* bryan usa Debian
* bryan tem conceito: 8.5
 


Cara, se usa desse modo:

#! /bin/sh
# Incr 0,1
i=0
j=10

#-ne é só para inteiros! Aqui, trata os dois como se fossem strings...
while [ $i != $j ]; do
i=`echo "scale=2; $i + 0.1" | bc`
echo $i
done;

Perceba o "scale" dentro do echo para o bc. Esse é um comando do bc que ajusta a precisão do cálculo. O padrão é zero, então ele sempre arredonda o valor. No caso, estou setando para 2 casas decimais depois da vírgula.

 
Resposta de xunil em 17/06/2007 - 19:49h:
* xunil usa Debian
* xunil tem conceito: nenhum voto.
 


byan obrigado por me ter ajudado nessa!
Mas estou tendo um problema é que nunca saio do ciclo while, mas reparei agora, que não tinha dado casa decimal ao j, colocando j=10.0 fica direitinho! valeu!!!
Agradeço também a todos os coleguas que comentaram!!!

 
Resposta de minduim em 07/04/2009 - 20:41h:
* minduim usa Ubuntu
* minduim tem conceito: nenhum voto.
 


como eu converto string para numeros?
Obrigado pela atenção.

#!/bin/bash
tamanho_max=7,4M
t=$(/usr/bin/du -h -s /home/)
total=$(echo $t |cut -f1 -d"/")
echo "$t"
echo "$total"
echo $total+1
if [ ${total} -ge ${tamanho_max} ]
then
echo "maior igual"
else
echo "menor igual"
fi


  


ATENÇÃO: Antes de contribuir com uma resposta, leia o artigo Qualidade de respostas e certifique-se de que esteja realmente contribuindo com a comunidade. Muitas vezes o ímpeto de contribuir nos leva a atrapalhar ao invés de ajudar.

Contribuir com resposta



CAPTCHA
[ Recarregar imagem ]

Digite o código acima:

  
* Nota: só é possível enviar respostas usuário que possui conta e esteja logado com ela, caso contrário sua mensagem será perdida.



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts