Pregunta

acabo de tropezado con la sintaxis bash:

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

Cuando busqué en Google para esto, me encontré http: // tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05 :

  

3.4.6. expansión aritmética

     

expansión aritmética permite la evaluación de una expresión aritmética y la sustitución del resultado. El formato para la expansión aritmética es:

$(( EXPRESSION )) 
     

...

     

Siempre que sea posible, los usuarios del golpe deben tratar de usar la sintaxis con corchetes:

$[ EXPRESSION ] 
     

Sin embargo, esto sólo se calculará el resultado de la expresión, y hacer no hay pruebas ...

En mi página de manual de bash sólo puedo encontrar la forma $(( EXPRESSION )) tales como:

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

Entonces, ¿qué pruebas no se realizan con $[...] que hacer con $((...)), o es el $[...] sólo una versión legado de $((...))?

¿Fue útil?

Solución

La página de manual para la v3.2.48 fiesta dice:

  

[...] El formato de expansión aritmética es:

     $((expression))
     

$ formato antiguo [expresión] es obsoleto y se eliminará en las próximas versiones   de bash.

Así $[...] es la sintaxis de edad que no debe utilizarse más.

Otros consejos

@sth es totalmente correcto. Y en caso de que sienten curiosidad acerca de por qué una sintaxis más detallada se encuentra ahora en favor, echa un vistazo a este viejo de correo electrónico de la lista de correo.

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

“En los primeros propuestas, se utilizó un formulario $ [expresión]. Fue funcionalmente equivalente a la "$ (())" del texto actual, pero las objeciones eran presentado que el KornShell 1988 ya había aplicado "$ (())" y no había ninguna razón de peso para inventar otra sintaxis. Por otra parte, el "$ []" sintaxis tenía una incompatibilidad menor participación los patrones en las declaraciones de los casos “.

No estoy seguro de que me gusta la lógica “pero alguien ya lo ha hecho con más palabras,” pero no lo tienes, tal vez el problema de los casos declaración fue más convincente que estamos imaginando que de esta mención oscura?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top