1) Должен ли я использовать $ (()), если я оперирую целыми числами?
Как и в большинстве случаев в программировании, "это зависит".Если вы думаете, что ваш код будет использоваться в старых системах Unix, где есть только оболочка Bourne, этот синтаксис не будет работать.
Если вы всегда будете в совершенно современной среде, то синтаксис $(( ... ))
действительно имеет больше смысла, так как допускает лаконичные выражения и выражения на языке Си.
Кроме того,как указывают другие, для любых числовых переменных внутри $(( ... ))
вы можете сохранить ввод и исключить начальный '$'.; -)
2) В чем разница между $ (($ x + 1)) и $ ((x + 1))?
Как указано вВ предыдущем абзаце разницы нет, за исключением того, что вам пришлось вводить на 1 символ меньше.
Наконец, я благодарю вас за ваш подход к самостоятельному выяснению вещей.Ваши небольшие тесты помогли вам доказать эти факты для себя и это метод, который я хотел бы, чтобы больше постеров с вопросами здесь, на SO, научились бы использовать!;-).
Вы на правильном пути к пониманию того, как улучшить свои знания оболочки.Если вы не знаете о различных инструментах отладки, доступных в оболочке, см. Третий абзац в Использование команды nohup для очень запутанной команды? , re set -vx
и PS4=...
.
Надеюсь, это поможет.