Подтвердить что ты не робот

Bash: let statement vs assign

В чем разница между назначением переменной типа var=foo и использованием let like t21? Или такие случаи, как var=${var}bar и let var+=bar? Каковы преимущества и недостатки каждого подхода?

4b9b3361

Ответ 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