Secțiunea relevantă a man bash
:
În contextul în care o instrucțiune de atribuire atribuie o valoare lui a
variabilă shell sau index de matrice, operatorul += poate fi folosit pentru a adăuga la
sau adăugați la valoarea anterioară a variabilei. Aceasta include argumente pentru
comenzi încorporate, cum ar fi declare that accept assignment statements
(comenzi de declarare). Când += este aplicat unei variabile pentru care
Atributul întreg a fost setat, valoarea este evaluată ca o exâ aritmetică
presiune și adăugată la valoarea curentă a variabilei, care este și evalâ
uated. Când += este aplicat unei variabile matrice folosind atribuirea compusăâ
(vezi Matrice de mai jos), valoarea variabilei nu este nesetata (așa cum este
când se utilizează =), iar valorile noi sunt atașate matricei începând cu
unul mai mare decât indicele maxim al matricei (pentru matrice indexate) sau
adăugată ca perechi cheie-valoare suplimentare într-o matrice asociativă. Când apâ
plied la o variabilă cu valoare de șir, valoarea este extinsă și atașată la
valoarea variabilei.
Deoarece nu ați setat atributul întreg pentru A
, a+=$b
va efectua concatenare de șiruri în loc de adunare aritmetică:
$ a=1; b=2; a+=$b; ecou „$a”
12
întrucât
$ unset a b
$ declara -i a=1; b=2; a+=$b; ecou „$a”
3
Alternativ, puteți forța evaluarea aritmetică folosind (( ... ))
$ unset a b
$ a=1; b=2; ((a+=$b)); ecou „$a”
3
(Rețineți că ((a+=b))
functioneaza de asemenea; cel $
nu este necesar să dereferiți variabilele într-un context aritmetic).