Я пытаюсь написать сценарий bash, и мне нужно было сделать математику с плавающей запятой. В основном я хочу сделать что-то вроде этого:Bash Scripting и bc
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
fi
Проблема, с которой я столкнулся, составляет $? имеет тенденцию удерживать вывод из эхо-программы, а не вызов bc. Есть ли способ сохранить вывод из программы bc в переменную?
EDIT:
Спасибо за быстрые ответы. Вот еще один способ взглянуть на проблему. Скажем, я изменил сценарий немного, так это выглядит следующим образом:
#!/bin/bash
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
exit
fi
echo "$NUM"
Когда пользователь вводит нормальное значение с плавающей запятой, он отлично работает:
bash script.sh 1.0
выход:
.1000000000000000000000000
Однако, когда пользователь вводит неверное значение, сценарий не может восстановиться:
bash script.sh 1.0a
выход:
(standard_in) 1: parse error
То, что я пытаюсь сделать, это получить его, чтобы выйти изящно.
Помните, что успешное эхо «NUM - $ NUM» перезаписало значение в $? из команды $ (echo ... | bc). –
Да, спасибо за исправление. – ghostdog74
Я разъяснил свое сообщение выше. Спасибо за подсказку на awk. Если я не могу заставить bc работать, мне придется проверить это. – LandonSchropp