A mensagem de erro significa que você tem um sinal de dólar literal em sua entrada para bc
. No shell, aspas simples preservam o valor literal de cada caractere. Use as aspas duplas para interpolar as variáveis:
bc <<< "scale=2; $var2"
Isso provavelmente não obterá a saída desejada, porque bc
geralmente não trunca ou preenche os valores de entrada. Você pode enganá-lo usando uma divisão sem operação:
bc <<< "scale=2; $var2 / 1"
Isso reforçará a escala de 2dp na saída.
No entanto, seria mais simples (e provavelmente mais preciso) fazer tudo na calculadora - ambos var1
e var2
terão os resultados da divisão de números inteiros em Bash e POSIX sh.
var3='bc <<< "scale = 2 ; $diff / 60 / 57"'
Isto dará a resposta matematicamente correta, apropriadamente arredondada. Se você quiser um comportamento inteiro e bc
de escalonamento por algum motivo, você pode usar a outra versão.