Я пытаюсь написать bash-скрипт, и мне нужно было кое-что вычислить.В основном я хочу сделать что-то вроде этого:
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
fi
Проблема, с которой я сталкиваюсь, это $?имеет тенденцию удерживать вывод программы echo, а не вызов bc.Есть ли способ сохранить вывод из программы bc в переменную?
РЕДАКТИРОВАТЬ:
Спасибо за быстрые ответы.Вот еще один способ взглянуть на проблему.Скажем, я немного изменил сценарий, чтобы он выглядел так:
#!/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
Что я пытаюсь сделатьсделать это, чтобы выйти изящно.