Арифметика с переменными
Я пытаюсь сделать арифметику, когда я присваиваю переменной значение. Когда сценарий достигает end_day, он не может выполнять математические вычисления, а когда я проверяю его в терминале, он просто возвращает выражение. Что мне нужно сделать, чтобы получить результат, присвоенный переменным.
Вот часть сценария, $fhour
происходит из другого места и представляет собой просто двузначное число.
#Date variables
export start_year=$(date -u +%Y)
export start_mon=$(date -u +%m)
export start_day=$(date -u +%d)
export start_hour=$fhour
export end_year=$(date -u +%Y)
export end_mon=$(date -u +%m)
export end_day=${$start_day+(((($start_day*24)+84)/24)-((($start_day*24)+84)%24))}
export end_hour=${($start_day*24+84)%24}
Спасибо за любую помощь!
1 ответ
Решение
Следуя руководству Cyberciti для Баш арифметики, вы не используете правильный метод. Для выполнения арифметических операций это формат:
$ ((Выражение))
Так что в вашем случае это будет правильное назначение переменной:
export end_day=$(( $start_day+(((($start_day*24)+84)/24)-((($start_day*24)+84)%24)) ))
export end_hour=$(( ($start_day*24+84)%24 ))
ПРИМЕЧАНИЕ: это нужно проверить, не уверен, что результаты верны.