Búsqueda de sitios web

Cómo habilitar el modo de depuración de scripts de Shell en Linux


Un script es simplemente una lista de comandos almacenados en un archivo. En lugar de ejecutar una secuencia de comandos escribiéndolos uno por uno todo el tiempo en la terminal, un usuario del sistema puede almacenarlos todos (comandos) en un archivo e invoca repetidamente el archivo para volver a ejecutar los comandos varias veces.

Mientras aprendemos a escribir guiones o durante las primeras etapas de la escritura de guiones, normalmente comenzamos escribiendo guiones pequeños o cortos con unas pocas líneas de comandos. Y normalmente depuramos dichos scripts sin hacer nada más que observar su resultado y asegurarnos de que funcionen según lo previsto.

Sin embargo, a medida que comenzamos a escribir scripts muy largos y avanzados con miles de líneas de comandos, por ejemplo scripts que modifican la configuración del sistema, realizan copias de seguridad críticas en redes y muchos más, nos daremos cuenta de que mirar únicamente el resultado de un script no es suficiente. suficiente para encontrar errores dentro de un script.

Por lo tanto, en esta serie de depuración de scripts de shell en Linux, explicaremos cómo habilitar la depuración de scripts de shell, pasaremos a explicar los diferentes modos de depuración de scripts de shell y cómo usarlos en la serie siguiente.

Cómo iniciar un guión

Un script se distingue de otros archivos por su primera línea, que contiene un #! (She-bang – define el tipo de archivo) y un nombre de ruta (ruta al intérprete). que informa al sistema que el archivo es una colección de comandos que serán interpretados por el programa especificado (intérprete).

A continuación se muestran ejemplos de las “primeras líneas” en diferentes tipos de guiones:

#!/bin/sh          [For sh scripting]
#!/bin/bash        [For bash scripting] 
#!/usr/bin/perl    [For perl programming]
#!/bin/awk -f      [For awk scripting]   

Nota: La primera línea o #! se puede omitir si un script contiene solo un conjunto de comandos estándar del sistema, sin ningún comando interno. directivas de shell.

Cómo ejecutar un script de Shell en Linux

La sintaxis convencional para invocar un script de shell es:

script_name  argument1 ... argumentN

Otra forma posible es especificando claramente el shell que ejecutará el script como se muestra a continuación:

shell script_name argument1 ... argumentN  

Por ejemplo:

/bin/bash script_name argument1 ... argumentN     [For bash scripting]
/bin/ksh script_name argument1 ... argumentN      [For ksh scripting]
/bin/sh script_name argument1 ... argumentN       [For sh scripting]

Para scripts que no tienen #! como primera línea y solo contienen comandos básicos del sistema como el siguiente:


#script containing standard system commands
cd /home/$USER
mkdir tmp
echo "tmp directory created under /home/$USER"

Simplemente hágalo ejecutable y ejecútelo de la siguiente manera:


chmod +x  script_name
./script_name 

Métodos para habilitar el modo de depuración de scripts de Shell

A continuación se muestran las principales opciones de depuración del script de shell:

  1. -n (abreviatura de noexec o no ecxecution): indica al shell que lea todos los comandos, pero no los ejecuta. Esta opción activa el modo de verificación de sintaxis.
  2. -x (abreviatura de xtrace o seguimiento de ejecución): le indica al shell que muestre todos los comandos y sus argumentos en la terminal mientras se ejecutan. Esta opción habilita el modo de seguimiento de shell.

1. Modificar la primera línea de un script de Shell

El primer mecanismo consiste en alterar la primera línea de un script de shell como se muestra a continuación; esto permitirá la depuración de todo el script.

#!/bin/sh option(s)

En el formulario anterior, la opción puede ser una o una combinación de las opciones de depuración anteriores.

2. Invocar Shell con opciones de depuración

El segundo es invocar el shell con opciones de depuración de la siguiente manera; este método también activará la depuración de todo el script.

shell option(s) script_name argument1 ... argumentN

Por ejemplo:

/bin/bash option(s) script_name argument1 ... argumentN   

3. Uso del comando integrado set Shell

El tercer método consiste en utilizar el comando integrado set para depurar una sección determinada de un script de shell, como una función. Este mecanismo es importante, ya que nos permite activar la depuración en cualquier segmento de un script de shell.

Podemos activar el modo de depuración usando el comando set en el formulario siguiente, donde opción es cualquiera de las opciones de depuración.

set option 

Para habilitar el modo de depuración, use:

set -option

Para deshabilitar el modo de depuración, use:

set +option

Además, si hemos habilitado varios modos de depuración en diferentes segmentos de un script de shell, podemos deshabilitarlos todos a la vez de la siguiente manera:

set -

Eso es todo por ahora al habilitar el modo de depuración del script de shell. Como hemos visto, podemos depurar un script de shell completo o una sección particular de un script.

En los próximos dos episodios de esta serie, cubriremos cómo utilizar las opciones de depuración del script de shell para explicar detalladamente, verificación de sintaxis y depuración de seguimiento de shell . modos con ejemplos.

Es importante destacar que no olvide hacer cualquier pregunta sobre esta guía o quizás brindarnos sus comentarios a través de la sección de comentarios a continuación. Hasta entonces, manténgase conectado con Tecmint.