Bash: Automatización, Scripting y segundo plano

Exploraremos la depuración de scripts, ejecutando scripts en segundo plano (background) e importaremos scripts utilizando el comando de origen en este artículo final en nuestra serie Basics Bash y Scripts.

También queremos depurar nuestros scripts rápidamente con un mínimo alboroto y los mejores resultados. Esto se puede hacer utilizando una función de rastreo muy práctica, construida directamente en el intérprete de comandos de Bash.

Finalmente, exploraremos cómo se pueden ejecutar los scripts en segundo plano. Si bien esto puede proporcionar beneficios inmediatos notables, como por ejemplo iniciar múltiples tareas a la vez para aligerar el proceso; sirve para mucho más más.

Bash Automation y Basic Scripting

¡No es difícil depurar un script en Bash! Tan pronto como revisemos la herramienta de depuración más completa de ShellCheck para Bash. Me gustaría presentar una excelente manera de depurar scripts de shell de una manera simple y fácil de entender. Dentro de la cáscara de bash, que se encuentra al final, un binario «simple» que se ejecuta en su máquina el binario de Bash, hay una opción proporcionada (-x) que se describe como comandos de impresión y sus argumentos a medida que se ejecutan.

Depuración con scripts

En la instrucción IF, el IDIOM de -O significa o, es decir, la primera parte (a, o más bien AA aquí, es 1) es verdadera, o la segunda parte (B es 1) es verdadera y el éxito se logra en tal un caso. El A programado será la salida del script, y el programa terminará con un código de salida de 1, lo que generalmente significa que había algún error. Se mostrará un mensaje confirmatorio si la secuencia de comandos ha funcionado correctamente y la secuencia de comandos terminaría con un código de salida de 0, lo que generalmente significa que lo que se pretendía hacer con el script ha finalizado y se ha realizado con éxito.

Ejecutando scripts como procesos para el fondo

Entonces, ¿por qué el script se ejecuta en una afirmación? Es posible que ya hayas notado que en nuestra declaración de IF, la variable A tiene un error tipográfico, registrado en el código como AA: ¡un error! Podríamos ir y revisar el script, y descubriríamos el error en seguida si fuese tan corto y sencillo como se muestra el script aquí. Pero la solución no es tan simple para un programa de 5000 líneas, en particular, ni si usa múltiples hilos, subshells complejos, etc.

Vamos a depurar esto ahora con la opción -x de Bash. Puede recordar que se puede iniciar un subshell utilizando un conjunto de modismos de $.

Importar scripts usando scripts de origen

En línea de la segunda parte de nuestro curso básico de automatización de Bash y Scripts. Simplemente escribiendo Bash, o en este caso Bash -x dentro de nuestra cáscara superior, también se puede iniciar. Ejecutaremos el script dentro de nuestra subshell bash en este caso, con la opción de -x para observar lo que sucede paso a paso. Por lo tanto, Bash -x . /test debugging.

Sh se ejecuta y se realiza el siguiente control condicional: «» == 1 -O 2 == 1 \\’. Notamos que algo es malo: en la segunda parte de nuestro control condicional, el valor de 2 se compara con 1, pero ¿qué sucede en la primera parte? Algo se compara con 1, pero algo es vacío (como indica la cadena vacía «)! Luego revisamos nuestro script para ver por qué ese lugar vacío está allí, y por qué el valor de nuestra variable no se ha completado.

En lugar de un error, entendemos rápidamente el AA, corrija el error, y el guión ahora funciona bien! Una cosa realmente genial para recordar cuando se usa Bash -x es que al redirigir STDERR (la salida de error) a STDOUT (la salida estándar) y capturando lo mismo con la camiseta, puede volver a leerlo (leer esto como \’Copiar\’) La salida del comando Bash: Aquí estamos ejecutando nuestro script fijo y redirigimos la salida de error (Bash -x envía toda su salida de depuración informativa a STDERR , la salida de error estándar, la salida de error estándar, usando TEE, luego capturamos STDOUT, que guarda la salida al archivo especificado, a saber, Bash -x Output.TXT.

Esto permite a un desarrollador bash revisar su código escrito lentamente, en un formato paso a paso. Esta forma de depuración puede ser muy valiosa, especialmente cuando Los programas se convierten en complejos, tienen funciones, se convierten en procesos de fondo de inicio múltiple, etc.