Estoy tratando de escribir un guión bash y necesitaba hacer algunas matemáticas de coma flotante. Básicamente quiero hacer algo como esto:Bash Scripting ycb
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
fi
El problema que me estoy encontrando es $? tiende a mantener el resultado del programa de eco y no de la llamada bc. ¿Hay alguna forma de guardar el resultado del programa bc en una variable?
EDIT:
Gracias por las respuestas rápidas. Aquí hay otra forma de ver el problema. Digo que he modificado el guión un poco por lo que se ve así:
#!/bin/bash
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
exit
fi
echo "$NUM"
Cuando el usuario introduce un valor de punto flotante normal, que trabaja muy bien:
bash script.sh 1.0
de salida:
.1000000000000000000000000
Sin embargo, cuando el usuario introduce un valor incorrecto, la secuencia de comandos no se puede recuperar:
bash script.sh 1.0a
de salida:
(standard_in) 1: parse error
Lo que estoy tratando de hacer es conseguir que salir con gracia.
Recuerde que el eco exitoso de 'NUM is $ NUM' habrá sobrescrito el valor en $? del comando '$ (echo ... | bc)'. –
sí, gracias por la corrección. – ghostdog74
Aclaré mi publicación anterior. Gracias por el consejo sobre awk. Si no puedo hacer que bc funcione, tendré que verificarlo. – LandonSchropp