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.