Я только что наткнулся на синтаксис удара:
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
Таким образом, с чем не выполняются тесты $[...]
это делает с $((...))
, или $[...]
просто версия прежней версии $((...))
?
В manpage для bash v3.2.48 написано:
[...] Формат арифметического расширения:
$((выражение))
Старый формат $[expression] устарел и будет удален в следующих версиях баша.
Итак, $[...]
— это старый синтаксис, который больше не следует использовать.