Script Bash e bc
Estou tentando escrever um script bash e precisava fazer algumas contas de ponto flutuante. Basicamente, quero fazer algo assim:
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
fi
O problema que eu estou enfrentando é $? tende a reter a saída do programa echo e não a chamada bc. Existe uma maneira de salvar a saída do programa bc em uma variável?
EDITAR:
Obrigado pelas respostas rápidas. Aqui está outra maneira de encarar o problema. Digamos que eu modifiquei um pouco o script para que fique assim:
#!/bin/bash
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
exit
fi
echo "$NUM"
Quando o usuário insere um valor normal de ponto flutuante, ele funciona bem:
bash script.sh 1.0
resultado:
.1000000000000000000000000
No entanto, quando o usuário digita um valor incorreto, o script não pode se recuperar:
bash script.sh 1.0a
resultado:
(standard_in) 1: parse error
O que estou tentando fazer é fazê-lo sair normalmente.