Когда я впервые изучал сценарии оболочки, многие примеры, которые я видел, использовали let
для базовой арифметики, но позже я узнал, что некоторые среды не представляют let
как встроенный, но поддерживают использование expr
вместо этого (хотя он значительно медленнее).
Однако во многих оболочках также можно использовать двойные скобки для выполнения арифметики, например $((54 + 102))
.
Поскольку я пишу script для переносимости, это представляет собой минное поле возможностей; в настоящее время я использую две разные функции оболочки (один для let
и один для expr
) и с помощью быстрого теста, чтобы решить, какой из них использовать в остальной части моего script.
Во всяком случае, я хотел бы знать, может ли кто-нибудь прояснить совместимость каждой из этих трех арифметических команд (и любых других, которые я пропустил). Я надеюсь, что форма двойных круглых скобок может быть достаточно распространенной, чтобы я мог просто проверять совместимость, но это трудно найти, поэтому я решил просто приехать сюда и попросить выяснить наверняка.
Только для того, чтобы заметить, что меня интересует только регулярная арифметика, я думаю, что я уже рассмотрел несколько больших целых чисел, с которыми я (возможно) должен работать.