Caracteres de la pestaña Echo en Bash Script

Muhammad Husnain 20 junio 2023
Caracteres de la pestaña Echo en Bash Script

Este artículo explica cómo “hacer eco” de uno o varios caracteres de “tabulador” cuando se usa un script Bash.

Caracteres de la pestaña Echo en Bash Script

El comando echo es simple: imprime todo lo que se pasa a la terminal. Normalmente, si guarda una variable como algo como:

example='         'testing

Si intenta imprimir esta variable con el comando echo '['$example']', obtendrá el siguiente resultado.

[ testing]

Esto no es lo que hemos ingresado o guardado en la variable. En el ejemplo anterior, usamos el carácter de tabulador dos veces, pero todo lo que vemos es un solo espacio.

Cabe señalar que este comportamiento no es coherente en todos los shells. Por ejemplo, ejecutar el mismo script en el shell zsh dará como resultado el siguiente resultado, que esperamos obtener.

[               testing]

Volviendo a los scripts de Bash, tenemos algunas formas de evitar esto.

Usa la bandera -e

La bandera -e significa habilitar la interpretación de escapes de barra invertida. Si estuvieras escribiendo el mismo ejemplo anterior, lo escribirías de la siguiente manera.

example='\t\t'testing
echo -e '['$example']'

Lo que da la salida:

[               testing]

La parte \t representa una pestaña. Por lo tanto, como queríamos introducir dos pestañas, lo escribimos como \t\t.

Una vez que se pasa la bandera -e, el símbolo \t se interpreta como una pestaña y se muestra según sea necesario.

Si no se usa el indicador -e, como en el siguiente caso, \t se leerá como cadenas literales y no se procesará como tabuladores.

example='\t\t'testing
echo '['$example']'

Lo que da la salida:

[\t\ttesting]

Cabe señalar que pasar la bandera no es POSIX; por lo tanto, esto no se puede usar de forma portátil, como en make, en el que la bandera no está implementada. Por lo tanto, discutiremos algunas alternativas, incluido el casi universal printf.

Por supuesto, esta parte se desvía ligeramente de lo que comenzamos, ya que abandonaremos el eco por completo.

Usar comillas dobles

Podría decirse que esta es la solución más simple y no requiere ninguna explicación más que su sintaxis. Usted escribiría el comando de la siguiente manera.

example='       'testing
echo "[$example]"

Lo que daría el resultado:

[       testing]

Use printf en su lugar

Esta es la más portátil de las tres soluciones y la más recomendada. echo tiene muchas implementaciones y versiones, pero printf es casi lo mismo.

Incluso si se implementa por separado en cualquier lugar, se implementa de manera muy similar. Podemos ver esto como cualquier variación de los métodos anteriores daría como resultado el mismo resultado cuando se llama con zsh, pero diferente cuando se llama con bash.

La sintaxis para usar printf se define a continuación.

example='       'x
printf '%s\n' "[$example]"

Lo que da la salida:

[       x]

Como recomendación general, echo funciona bien siempre que la salida necesaria sea un texto simple como hola, pero para cualquier cosa compleja, usar echo puede ser complicado debido a lo diferente que puede ser su comportamiento entre shells. En todos estos casos (caracteres especiales, etc.), se recomienda utilizar printf en su lugar.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Artículo relacionado - Bash Echo