Acabei de testar duas maneiras diferentes e as duas funcionaram para mim:
x=$((x+1))
... ou ...
x=$((++x))
Como atribuo x o valor de x + 1? Eu posso fazê-lo em outras línguas, mas não consigo descobrir em bash.
isso deve fazer o trabalho
let x=$x+1
Isso pode funcionar:
x = 'expr $x + 1'
@ A resposta do Bandit é boa, mas quero destacar a diferença que "let" e (()) fazem com a sintaxe normal do shell:
let x++
faz com que o bash (ou ksh, ou qualquer shell POSIX) trate a expressão como uma "avaliação aritmética" na qual as variáveis referenciadas não precisam ser precedidas de "$". Uma vantagem de usar (()) é que os tokens de outra forma não precisam ser citados ou escapados, por ex. "*" para multiplicação como em:
(( x = x * 2 ))
Acho essa sintaxe ligeiramente mais clara que $ (()), que usa a saída da expressão, por exemplo,
x=$(( x * 2 ))