Domanda

Ho appena inciampato sulla sintassi bash:

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

Quando ho Googled per questo, ho trovato http: // tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05 :

  

3.4.6. espansione aritmetica

     

Espansione aritmetica permette la valutazione di un'espressione aritmetica e la sostituzione del risultato. Il formato per l'espansione aritmetica è:

$(( EXPRESSION )) 
     

...

     

Per quanto possibile, gli utenti di Bash dovrebbero cercare di usare la sintassi con le parentesi quadre:

$[ EXPRESSION ] 
     

Tuttavia, questo calcolerà solo il risultato di espressione, e fare nessun test ...

Nella mia pagina man di bash posso solo trovare il modulo $(( EXPRESSION )) come ad esempio:

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

Così che i test non vengono eseguiti con $[...] che fare con $((...)), o è il $[...] solo una versione precedente di $((...))?

È stato utile?

Soluzione

La pagina di manuale di bash v3.2.48 dice:

  

[...] Il formato per l'espansione aritmetica è:

     $((expression))
     

Il vecchio formato $ [espressione] è deprecato e verrà rimossa in future versioni   di bash.

Quindi $[...] è vecchia sintassi che non deve essere più utilizzato.

Altri suggerimenti

@sth è del tutto corretto. E nel caso in cui siete curiosi di sapere il motivo per cui una sintassi più prolissa è ora a favore, controlla questa vecchia e-mail dalla mailing list.

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

“Nelle prime proposte, è stata utilizzata una forma $ [espressione]. E 'stato funzionalmente equivalente al "$ (())" del testo attuale, ma le obiezioni erano depositata che il 1988 KornShell aveva già implementato "$ (())" e non vi era alcuna ragione per inventarsi un'altra sintassi. Inoltre, il "$ []" sintassi aveva un'incompatibilità minore che coinvolge i modelli in dichiarazioni caso “.

Non sono sicuro che mi piace la logica “ma qualcuno ha già fatto più verboso”, ma il gioco è fatto, forse il problema caso-economico è stato più convincente di quanto sto immaginando da questo oscuro accenno?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top