La automatización de una tarea repetitiva tiende a alegrar al desarrollador de Bash: en lugar de escribir comandos interminables una y otra vez, un script simplemente hace el trabajo repetidamente. Bash es ideal para tal automatización. ¡Esta serie te ayudará a comenzar!
Que es Automatización de Bash?
El shell Bash es un potente shell de Linux que posibilita la automatización en profundidad de tareas repetitivas. El shell de Bash Linux no solo es una alternativa principal para DevOps, bases de datos y ingenieros de pruebas por igual, sino que todos los días los usuarios pueden beneficiarse de las habilidades de Bash que se aprenden lentamente y en constante aumento. Bash es además un lenguaje de programación y programación que crece en ti. He estado codificando activamente en Bash desde 2012 y lo he usado mucho más tiempo.
Bash además se presta a muchos dominios de aplicaciones y casos de uso diferentes. A modo de ejemplo, puede usarlo fácilmente para el manejo de Big Data y, sorprendentemente, parece que se presta extremadamente bien a esta tarea debido a la gran cantidad de herramientas de procesamiento de texto disponibles en él, o disponibles como paquetes fáciles de instalar. Además es muy adecuado para la programación y el mantenimiento de copias de seguridad y bases de datos, o para el manejo de grandes soluciones de almacenamiento de archivos, la automatización de servidores web y mucho más.
Una cosa que he descubierto es que cada vez que se presenta el próximo problema, un poco de investigación en un motor de búsqueda o en los múltiples sitios web de Stackoverflow, proporcionará rápidamente no solo una solución al problema, sino una posibilidad para crecer y aprender. Esta es una experiencia muy equivalente a la de una persona que aprende a ser editor. vi
donde lo mismo vale; siempre que se presenta un obstáculo, la respuesta está cerca.
Esta miniserie consta de tres partes de la cual es la primera, y en ella veremos los conceptos básicos de automatización y scripting de Bash.
¡El asunto!
Tal vez se pregunte qué tipo de título es ese. Y estaría en lo cierto, a menos que estuviera hablando con un desarrollador de Linux experimentado. Sonreirían en el mejor de los casos. Eso es debido a que las dos primeras letras de un guión Bash bien escrito siempre serían, bueno, ¡Shebang!
Hay dos personajes, a saber #!
que se puede colocar en la parte de arriba de un script, lo que indica al intérprete qué intérprete puede, debe y se utilizará para procesar el script en cuestión. Sucede que esto símbolo como un todo se llama El asunto como un todo.
Por eso, para ampliar nuestra declaración anterior: la primera línea de un script Bash bien escrito debe comenzar con #!/bin/bash
para indicar al shell (sea cual sea el shell que se esté usando, podría ser, a modo de ejemplo, bash
o sh
o zsh
) que queremos el binario /bin/bash
(nuestro shell Bash) para ejecutar este código.
Pongamos esto en práctica, definiendo un pequeño script test.sh
como sigue:
#!/bin/bash echo 'Hello CloudSavvyIT Readers!'
Puede crear este script usando su editor de texto favorito, que preferiblemente sería un editor que utiliza solo fuentes monoespaciadas como vi, empuje, nano o algún editor basado en texto sin formato en su escritorio Linux, y preferiblemente evitando cosas como un procesador de texto como OpenOffice Writer, etc., dado que pueden escribir datos o caracteres binarios adicionales no deseados en nuestro script. Dicho de otra forma; necesitamos utilizar texto sin formato.
Una vez definido este script, lo hacemos ejecutable ejecutando chmod +x test.sh
en la línea de comando. Entonces podemos iniciar el script simplemente llamando a su nombre con el prefijo ./
: ./test.sh
Parámetros de entrada
Tan pronto como empiece a escribir scripts, probablemente encontrará que desea pasar parámetros de entrada al script. Una forma de hacerlo es usar los parámetros posicionales simples que están disponibles en Bash por defecto. Echemos un vistazo a un script de ejemplo test2.sh
, que definimos de la próxima manera:
#!/bin/bash echo "${1}"
Aquí hemos utilizado el parámetro posicional ${1}
. Esta variable reflejará la primera palabra (separada por espacio por defecto) que se pasó a nuestro script, a menos que se use una cita. Veamos cómo funciona esto:
Después de hacer que nuestro script sea ejecutable nuevamente con chmod +x test2.sh
ejecutamos lo mismo y pasamos una sola palabra hello
como primer parámetro posicional (${1}
). El resultado es que hello
se repite a nosotros.
Esto se debe a que cuando se inició el script, la variable ${1}
(o $1
aún cuando recomiendo poner siempre comillas alrededor de los nombres de las variables) se estableció en el valor del primer parámetro posicional; la primera palabra o cadena entre comillas después del nombre del script.
Después pasamos hello world
, a pesar de esto, esto solo hizo eco hello
De vuelta a nosotros. El motivo es sencilla; la segunda palabra (separada por defecto por un espacio) se ve como el segundo parámetro posicional y, por eso, se inicializa como ${2}
en el guión, no ${1}
.
Eludimos esta conducta poniendo comillas alrededor de la entrada cuando pasamos 'Hello CloudSavvyIT Readers!'
. Las comillas simples o dobles habrían funcionado, aún cuando su funcionamiento es distinto, más sobre esto en la próxima parte de esta serie. El resultado es que nuestro primer parámetro posicional ${1}
se establece en el texto completo Hello CloudSavvyIT Readers!
, y así se nos hace eco de lo mismo.
Si desea obtener más información sobre las variables, nuestros posts Funciones Bash y Variables locales y Exportación de variables en Bash: los posts por qué y cómo además pueden ser de interés.
Terminando
En este post, revisamos el primer conjunto de conceptos básicos de automatización y secuencias de comandos de Bash. Aprendimos qué es la automatización Bash y Shebang, y cómo comenzar a pasar variables de entrada a nuestros scripts.
En Bash Automation and Scripting Basics (Parte 2), analizamos las citas de variables y más. ¡disfrutar!