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

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

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

Mas o bash me dá um zero.

aqui está 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 de fazer com que imprima 0,00972222 se eu inserir 35.

Obrigado!

Responder1

Aqui tente isso

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

então seu comando ficaria assim

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 0imprimir o cabeçalho (o que, estranhamente,bcnão será fácil), você pode alimentar o número printf(que também pode arredondá-lo para cima/para baixo para você):

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

informação relacionada