Skip to content

Commit 786f4cd

Browse files
committed
Add explanation about the need of interpolation
1 parent 215df26 commit 786f4cd

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

translations/es.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,27 @@ Para mí el problema fundamental con Bash y muchos dialectos de Shell es que el
2424

2525
Bash básicamente se basa en evaluar todo. Esto es muy práctico para el uso interactivo, ya que reduce la necesidad de mucha sintaxis explícita cuando lo que realmente quieres hacer es decirle que abra un archivo en un editor de texto. Esto es bastante malo en un contexto interpretativo porque convierte todo el lenguaje en una inyección *honeypot*. Sí, esto es posible y no es muy complicado escribir un Bash seguro una vez conoces los trucos, pero esto requiere una consideración extra que es fácil de olvidar o tener pereza al respecto. Escribir tres o cuatro línea de Bash seguro es sencillo; doscientas es un poco más desafiante.
2626

27+
Bash tiene otros problemas. La sintaxis que no es nativa de la Bourne Shell se ve realmente fea. Por ejemplo, las líneas de comando (*shells*) más modernas tienen *arrays* (en español, vectores o arreglos). Vamos a revisar la sintaxis para iterar un array, pero vamos a tomar el camino largo.
28+
29+
.. code:: bash
30+
31+
$ foo='esto y aquello' # asignación de variable
32+
$ echo $foo
33+
esto y aquello
34+
$ # Oh cielos. El texto dentro de la variable fue dividido en argumentos en espapacio en blanco, porque evalua todas las cosas.
35+
$
36+
$ # Para evitar este comportamiento insano, hacemos lo siguiente: usamos una interpolación de cadena. :-(
37+
$ echo "$foo"
38+
esto y aquello
39+
40+
¿Qué tiene esto que ver con iterar los arrays? Desafortunadamente la respuesta es «algo».
41+
42+
Para iterar correctamente en las cadenas dentro de un array (lo único que puede contener un array), también usas la sintaxis de interpolación de variables.
43+
44+
.. code:: bash
45+
46+
for elemento in "${mi_array[@]}"; do
47+
cosas que hacer con "$elemento"
48+
done
49+
2750

0 commit comments

Comments
 (0)