bash: $ [] vs. $ (())
-
19-09-2019 - |
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 $((...))
?
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?