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


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

Спасибо за любую помощь!


2
2018-02-07 22:39


происхождения




ответы:


Следуя руководству Cyberciti для арифметика bash вы не используете правильный метод. Чтобы сделать операции с арифметикой, это формат:

$ ((Выражение))

Поэтому в вашем случае это будет правильное назначение переменной:

export end_day=$(( $start_day+(((($start_day*24)+84)/24)-((($start_day*24)+84)%24)) ))
export end_hour=$(( ($start_day*24+84)%24 ))

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


2
2018-02-07 22:57



Спасибо за ответ, что исправил арифметическую проблему. Думаю. Остальная часть скрипта теперь показывает свои ошибки, но эта отладка выполняется в течение другого дня. - WxPilot
+1 красиво сделано. Я тоже работал над этим, но ты избил меня! - Aaron