Арифметика с переменными

Я пытаюсь сделать арифметику, когда я присваиваю переменной значение. Когда сценарий достигает 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 ))

ПРИМЕЧАНИЕ: это нужно проверить, не уверен, что результаты верны.

Другие вопросы по тегам