Question

Je viens trébuché sur la syntaxe bash:

foo=42
bar=$[foo+1] # evaluates an arithmetic expression

Quand je googlé pour cela, j'ai trouvé http: // tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05 :

  

3.4.6. développement arithmétique

     

dilatation arithmétique permet l'évaluation d'une expression arithmétique et la substitution du résultat. Le format de l'expansion arithmétique est:

$(( EXPRESSION )) 
     

...

     

Dans la mesure du possible, les utilisateurs de Bash devraient essayer d'utiliser la syntaxe avec des crochets:

$[ EXPRESSION ] 
     

Cependant, cela ne calculer le résultat de l'expression, et ne pas de tests ...

Dans ma page man bash je ne peux trouver la forme de $(( EXPRESSION )) tels que:

foo=42
bar=$((foo+1)) # evaluates an arithmetic expression

Alors que les tests ne sont pas effectués avec $[...] que faire avec $((...)), ou est le $[...] juste une ancienne version de $((...))?

Était-ce utile?

La solution

La page de manuel pour v3.2.48 bash dit:

  

[...] Le format d'expansion arithmétique est:

     $((expression))
     

ancien format $ [expression] est dépréciée et sera supprimée dans les prochaines versions   de bash.

$[...] est ancienne syntaxe qui ne doit pas être utilisé plus.

Autres conseils

@sth est tout à fait correct. Et si vous êtes curieux de savoir pourquoi une syntaxe plus bavard est maintenant en faveur, consultez cet ancien e-mail de la liste de diffusion.

http://lists.gnu.org/archive/html/bug -bash / 2012-04 / msg00033.html

« Dans les premières propositions, une forme $ a été utilisé [expression]. Il était fonctionnellement équivalent à « $ (()) » du texte actuel, mais des objections ont été déposée que le 1988 KornShell avait déjà mis en place « $ (()) » et il n'y avait aucune raison impérieuse d'inventer une autre syntaxe. En outre, la syntaxe « $ [] » avait une incompatibilité mineure impliquant les motifs dans les déclarations de cas. »

Je ne suis pas sûr que j'aime la raison d'être «mais quelqu'un a déjà fait plus verbeux, » mais là vous l'avez, peut-être le problème au cas déclaration était plus convaincante que j'imagine de cette mention obscure?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top