bc remove ponto decimal

0

Isso está relacionado a Script de shell muito lento para saída para Conky

Este código é quase perfeito:

stdbuf -oL jack_cpu_load \
    | grep --line-buffered "jack DSP load" \
    | stdbuf -oL cut -d' ' -f4 \
    | while read line; do
        echo "scale=0; $line*100/1" | bc -l > /tmp/buffer
    done &

O único problema é que bc remove o ponto decimal e zero quando a saída é < 1.

Eu gostaria de ver dois lugares após o ponto decimal, mas sem frações, com um zero para a saída < 1 estaria bem.

    
por user57649 27.01.2014 / 18:20

2 respostas

1

Você só precisa fazer isso

stdbuf -oL jack_cpu_load |
grep --line-buffered "jack DSP load" |
stdbuf -oL cut -d' ' -f4 |
while read line; do echo "$line" > /tmp/buffer; done &

para gerar o valor que você insere sem modificações.

    
por 27.01.2014 / 19:00
2

Acho que se você adicionar o scale= para que ele tenha um valor maior que 0 , você verá números decimais exibidos.

Exemplo

$  echo "scale=0; 100*100/1" | bc -l
10000

$  echo "scale=2; 100*100/1" | bc -l
10000.00

Obtendo 44.93 e não 0.4493, por quê?

O uso de $line*100/1 com o 100/1 parece desnecessário. Tire essa parte. Multiplicar $line por 100 está desviando seus resultados por 2 casas decimais.

    
por 27.01.2014 / 18:37