удар: $ [<арифметическое выражение>] по сравнению с $ ((<арифметическое выражение>))

Я только что наткнулся на синтаксис удара:

foo=42
bar=$[foo+1] # evaluates an arithmetic expression

Когда я Погугленный для этого, я нашел http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05:

3.4.6. Арифметическое расширение

Арифметическое расширение позволяет оценку арифметического выражения и замену результата. Формат для арифметического расширения:

$(( EXPRESSION )) 

...

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

$[ EXPRESSION ] 

Однако это только вычислит результат ВЫРАЖЕНИЯ и не сделает никаких тестов...

В моей странице справочника удара я могу только найти $(( EXPRESSION )) сформируйтесь, такие как:

foo=42
bar=$((foo+1)) # evaluates an arithmetic expression

Таким образом, с чем не выполняются тесты $[...] это делает с $((...)), или $[...] просто версия прежней версии $((...))?

29
задан Chen Levy 10 March 2010 в 09:53
поделиться

1 ответ

В manpage для bash v3.2.48 написано:

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

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

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

Итак, $[...] — это старый синтаксис, который больше не следует использовать.

34
ответ дан 28 November 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: