2

Как мне присвоить х значение х + 1? Я могу сделать это на других языках, но не могу понять это в bash.

4 ответа4

7

Я только что проверил два разных способа, и оба работали на меня:

x=$((x+1))

...или же...

x=$((++x))
3

это должно делать работу

let x=$x+1
1

Это может сработать:

x = `expr $x + 1`
0

@ Ответ Бандита в порядке, но я хочу подчеркнуть разницу между "let" и (()) в обычном синтаксисе оболочки:

let x++

заставляет bash (или ksh, или любую оболочку POSIX) рассматривать выражение как "арифметическую оценку", в которой ссылочные переменные не должны начинаться с «$». Одним из преимуществ использования (()) является то, что в противном случае специальные токены не нужно заключать в кавычки или экранировать, например, «*» для умножения, как в:

(( x = x * 2 ))

Я нахожу этот синтаксис немного яснее, чем $(()), который использует вывод выражения, например

x=$(( x * 2 ))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .