É possível obter uma saída decimal fazendo divisão no Bash? [duplicado]

2

Basicamente no Bash, o que eu estou tentando fazer é dar uma entrada de segundos de um usuário e encontrar as horas. Então, basicamente, se o usuário digitar 35, a saída deve ser 0,00972222.

Mas o bash me dá um zero.

heres o comando que tenho:

echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $((sec/3600)) is the amount of hours "

Existe uma maneira que eu possa fazer isso para imprimir 0,00972222 se eu digitar 35.

Obrigado!

    
por shawn edward 19.02.2016 / 08:16

1 resposta

7

Aqui tente isto

echo $(echo "35/3600" | bc -l )

para que seu comando se pareça com

echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $(echo "$sec/3600" | bc -l ) is the amount of hours "

Para controlar o número de dígitos significativos impressos, use scale=N . Por exemplo:

$ echo "scale=3; 35/3600" | bc -l 
.009

Se você também quiser ter o primeiro 0 impresso (o que, estranhamente, bc não será fácil ), você pode alimentar o número para printf (que também pode arredondá-lo para você):

$ printf '%.3f\n' $(echo "35/3600" | bc -l)
0.010
$ printf '%.4f\n' $(echo "35/3600" | bc -l)
0.0097
    
por 19.02.2016 / 08:39