Почему я должен использовать $ вместо $ ((EXPR))?

В абзаце, объясняющем арифметическое расширение, руководство пользователя Bash раскрывает 2 разных способа оценки выражения, первый использует $(( EXPRESSION )) а второй использует $[ EXPRESSION ] . Эти два способа кажутся довольно похожими, поскольку единственная разница, которую я нашел:

$[ EXPRESSION ] рассчитывает только результат EXPRESSION и не выполняет никаких тестов:

Тем не менее, я заинтригован, потому что в одном документе рекомендуется использовать $[ EXPRESSION ] а не $(( EXPRESSION )) .

По возможности пользователи Bash должны использовать синтаксис с квадратными скобками:

Зачем вам это нужно, если меньше тестов?

  • Когда я пытаюсь запустить комментарий, я получаю ошибку `Команда не может быть найдена, потому что '/ usr / bin' не входит в переменную среды PATH '
  • Почему локальная fn = $ (...) маскирует $? код состояния
  • Выполняют ли команды в подстановке команд, подстановке процессов и в конвейере принимают входные данные stdin?
  • readarray - разделительная строка с использованием разделителя IFS возвращает пустой массив
  • подсчет символов с использованием bash
  • В то время как порождает подоболочку в bash?
  • Как вставить вывод предыдущей команды в текущую командную строку?
  • Оператор Bash OR не оценивает несколько переменных
  • One Solution collect form web for “Почему я должен использовать $ вместо $ ((EXPR))?”

    Вопрос о дублировании (с ответом)

    https://stackoverflow.com/questions/2415724/bash-arithmetic-expression-vs-arithmetic-expression

    В manpage для bash v3.2.48 говорится:

    […] Формат арифметического расширения:

      $((expression)) 

    Старый формат $ [выражение] устарел и будет удален в будущих версиях bash.

    Таким образом, $ […] – это старый синтаксис, который больше не должен использоваться

    В дополнение к этому ответу:

    http://manual.cream.org/index.cgi/bash.1#27

    Информация, относящаяся к версиям bash:

    Вот некоторая информация о страницах руководства bash (трудно найти информацию о том, к какой версии относится каждый):

    Ссылка OPs:

    http://www.tldp.org/guides.html Bash Guide for Beginners версия: 1.11 автор: Machtelt Garrels, последнее обновление: декабрь 2008 г.

    sth (74.6k rep), цитирующий bash v3.2.48

    от https://stackoverflow.com/questions/2415724/bash-arithmetic-expression-vs-arithmetic-expression )

    Примечание. Подробнее о [] vs (()) здесь: http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00033.html

    ссылка, которую я нашел:

    http://www.gnu.org/software/bash/manual/ Последнее обновление 22 августа 2012 г.

    http://www.gnu.org/software/bash/manual/bash.html#Arithmetic-Expansion

    Interesting Posts

    Совместное использование клавиатуры по сети точка-точка

    Как символическая ссылка представлена ​​в файловой системе по жесткой ссылке?

    Разный вывод `find | xargs ls` для той же команды в разных версиях Ubuntu

    Как запустить скрипт во время загрузки в Debian Wheezy?

    Есть ли способ включить Ctrl + L для очистки экрана при установке «set -o vi»?

    Скопируйте открытый ключ ssh на несколько хостов Linux

    Как повторно запустить автоиндексирование vim в файле tex?

    Является ли тире или какой-либо другой оболочке «быстрее», чем bash?

    Использование filterdiff для исключения diff

    доступ только для чтения ко всем файлам в определенной подпапке

    Подсказка: замените пользовательский путь коротким словом, например ~ для дома

    Что хорошего в знаках «-» (минус) в любых командах Linux / UNIX?

    Простой альтернативный сервер имен a la / etc / hosts

    Инструменты для отладки таблиц маршрутизации на машине Linux?

    Временная отметка каждой строки файла с датой, взятой из самого файла

    Linux и Unix - лучшая ОС в мире.