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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts