bc
diferem um pouco no status de retorno, mas a ideia geral é que, se você fornecer uma entrada válida, bc
sai com o status 0. 42/0
é uma entrada válida: não há erro de leitura e é até mesmo uma expressão sintaticamente válida, portanto bc
retorna 0. Se você passou uma segunda linha com outra operação, bc
a executaria. Isso é diferente de expr
cuja finalidade é avaliar uma única expressão aritmética; aqui o resultado dessa única expressão determina o status de retorno.
A maneira mais direta de gerar um status de saída que indica falha é chamar false
. Coisas como expr 1 / 0
só têm o seu lugar em concursos de programação ofuscados.