X = x + 1 no terminal Mac

2

Como atribuo x o valor de x + 1? Eu posso fazê-lo em outras línguas, mas não consigo descobrir em bash.

    
por JShoe 22.05.2011 / 05:29

4 respostas

7

Acabei de testar duas maneiras diferentes e as duas funcionaram para mim:

x=$((x+1))

... ou ...

x=$((++x))
    
por 22.05.2011 / 05:39
3

isso deve fazer o trabalho

let x=$x+1
    
por 22.05.2011 / 05:35
1

Isso pode funcionar:

x = 'expr $x + 1'
    
por 22.05.2011 / 05:32
0

@ 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 ))
    
por 23.05.2011 / 15:29