Explicação de erros
O erro é o mesmo que se você inserisse:
$ expr 10.5 + 11.8
expr: non-integer argument
Expr está reclamando que você deu a ele não inteiros. Isso ocorre porque o programa expr
não foi projetado para cálculos não inteiros:
-
expr
foi gerado como erro padrão, seu terminal apenas exibe - Mas quando você usa o canal
|
, o canal só transfere o padrão, não o erro padrão -
Como
bc
não recebeu nada com o qual trabalhar, ele não forneceu nenhuma saída, como você pode ver quando tenta enviar nada (exceto nova linha) parabc
:$ echo | bc
O resultado é bc
não diz nada. Então, o que você vê na tela com o comando original ainda era apenas a reclamação de expr
por meio de erro padrão.
Recomendação
Para cálculos decimais, você pode usar apenas bc
e alguns meios para obter entrada para bc
, como com here-strings:
$ bc <<< '10.5 + 11.8'
22.3
Ou, para usar variáveis:
$ a=10.5
$ b=11.8
$ c=$(bc <<< "$a + $b")
$ echo $c
22.3
- O
$(
e)
é uma substituição de comando -
<<< string
é uma sintaxe here-string, envia o conteúdo da string para stdin, que bc recebe