В чем разница между назначением переменной типа var=foo
и использованием let like t21? Или такие случаи, как var=${var}bar
и let var+=bar
? Каковы преимущества и недостатки каждого подхода?
Bash: let statement vs assign
Ответ 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