float Aponte a matemática no script de shell Unix e atribua-a à variável [duplicate]

0

Eu tenho feito cálculos de números inteiros como este.

a=12
b=23
c=$((a-b))
echo $c

Mas, agora, para números flutuantes, isso está falhando Eu li que podemos fazer isso usando bc no entanto eu quero atribuir o resultado na variável no final.

a=12.7
b=23.33
c=$((a-b)) | bc
echo $c
    
por Avitesh Kesharwani 28.02.2018 / 21:50

1 resposta

1
c=$( printf '%s - %s\n' "$a" "$b" | bc )

ou, para os preguiçosos,

c=$( echo "$a - $b" | bc )

ou, para o usuário preguiçoso bash ,

c=$( bc <<<"$a - $b" )

O problema com o seu código é que

c=$((a-b)) | bc

não funciona. Você pode somente (útil) canalizar coisas que produzem saída e c=$((a-b)) é uma atribuição que 1) falhará se $a ou $b forem números de ponto flutuante (com um erro de sintaxe) e 2) não produzir saída . Além disso, a saída de bc (nothing) não será atribuída a c , uma vez que não faz parte da atribuição.

    
por 28.02.2018 / 21:57