dividindo no script bash com dígitos

0

Eu quero mergulhar inteiros mas meus resultados seriam um dígito que não pode fazer dígitos:

from=69;to=64;steps=$(( 12-1 )); ssize=$(( (to - from) / steps ))
echo $ssize $steps

resultados

0 11

Editar:

bc trabalha com multiplicação:

echo "5.94*11.14" | bc

66.17

mas divisão

echo "5.94/11.14" | bc

0

    
por Raymond Ghaffarian Shirazi 07.10.2015 / 19:58

1 resposta

1

Como já foi mencionado, o bash não pode manipular o cálculo do ponto flutuante sozinho. Você está fazendo uma divisão no chão

(69-64)//11 = 5//11 = 0

Em vez disso, use bc

steps=12;ssize=$(bc -l <<< "from=69;to=64;(to - from)/$steps;"); echo $ssize $steps

A opção -l carregará o mathlib e, com ele, definirá scale=20 informando bc quantos dígitos após o período a ser manipulado. O padrão é 0 , é por isso que você também vê apenas a divisão inteira ao invocar bc sem -l . Como alternativa, defina scale manualmente

steps=12;ssize=$(bc <<< "scale=20;from=69;to=64;(to - from)/$steps;"); echo $ssize $steps
    
por Nephente 07.10.2015 / 21:30