Как мне присвоить х значение х + 1? Я могу сделать это на других языках, но не могу понять это в bash.
4 ответа
Я только что проверил два разных способа, и оба работали на меня:
x=$((x+1))
...или же...
x=$((++x))
это должно делать работу
let x=$x+1
Это может сработать:
x = `expr $x + 1`
@ Ответ Бандита в порядке, но я хочу подчеркнуть разницу между "let" и (()) в обычном синтаксисе оболочки:
let x++
заставляет bash (или ksh, или любую оболочку POSIX) рассматривать выражение как "арифметическую оценку", в которой ссылочные переменные не должны начинаться с «$». Одним из преимуществ использования (()) является то, что в противном случае специальные токены не нужно заключать в кавычки или экранировать, например, «*» для умножения, как в:
(( x = x * 2 ))
Я нахожу этот синтаксис немного яснее, чем $(()), который использует вывод выражения, например
x=$(( x * 2 ))