Ответ 1
let
делает именно то, что делает (( ))
, это для арифметических выражений. Существует почти никакой разницы между let
и (( ))
.
Ваши примеры недействительны. var=${var}bar
собирается добавить слово bar
в переменную var
(которая является строковой операцией), let var+=bar
не будет работать, потому что это не арифметическое выражение:
$ var='5'; let var+=bar; echo "$var"
5
Собственно, это арифметическое выражение, если установлена только переменная bar
, иначе bar
обрабатывается как ноль.
$ var='5'; bar=2; let var+=bar; echo "$var"
7