Comando bash 'set -x'

Comando bash 'set -x'

Intento colocar El comando se utiliza para muchos propósitos en Bash y tiene muchas opciones para habilitar o deshabilitar diferentes tipos de características del entorno de shell. El -X La opción es una de las opciones del comando set que se utiliza para habilitar la función de depuración del script bash para la solución de problemas. El 'establecer -x'El comando se puede usar desde el terminal o dentro de cualquier script de bash. Diferentes propósitos para usar el 'establecer -x'El comando se ha descrito en este tutorial.

Habilitar la depuración

Si el script no muestra la salida correcta o la salida inesperada, este problema se puede resolver utilizando la depuración. La función de depuración se puede habilitar de diferentes maneras en el script bash que se menciona a continuación.

La función de depuración se puede habilitar utilizando el comando 'set -x' en el terminal o dentro del script bash utilizando el comando 'set -x'. El uso del comando 'set -x' se ha mostrado en la siguiente parte del tutorial.
La función de depuración también se puede habilitar utilizando la opción -x al momento de ejecutar el archivo bash como el siguiente comando:

$ bash -x nombre de archivo.intento

La función de depuración también se puede habilitar utilizando la siguiente línea al comienzo del script:

#!/bin/sh -x

Deshabilitar la depuración

Requiere deshabilitar la función de depuración del script bash después de resolver el problema. El comando 'set +x' se usa para deshabilitar la función de depuración.

Diferentes ejemplos del comando 'set -x'

Se han demostrado dos usos diferentes de la opción 'set -x' utilizando ejemplos.

Ejemplo-1: Habilitar y deshabilitar la función de depuración

Cree un archivo bash utilizando el siguiente script que tomará la entrada del usuario antes y después de usar los comandos 'set -x' y 'set +x'. El valor del primer nombre se tomará e imprimirá antes de usar el comando 'set -x'. El valor del apellido se tomará e imprimirá después de usar el comando 'set -x'. A continuación, los valores del primer nombre y el apellido se imprimirán después de usar el comando 'set +x'.

#!/bin/bash
#Entrada e imprima
Leer -P "Ingrese su primer nombre:" First Name
echo "Tu primer nombre es $ FirstName"
#Enable el comando set -x
establecer -x
#Ate otra entrada e imprima
Leer -P "Ingrese su apellido:" LastName
echo "Tu apellido es $ LastName"
#Disable el comando set x
establecer +x
#Imprimir las variables
echo "Tu nombre completo es $ FirstName $ LastName"

Producción:

La siguiente salida se imprimirá después de ejecutar el script anterior. Según la salida, cada declaración del script se ha imprimido después de ejecutar el comando 'set -x'.

Ejemplo -2: Script de depuración usando el comando 'set -x'

Cree un archivo bash con el siguiente script que tomará un nombre de archivo del usuario para leer al habilitar la función de depuración. El comando 'set -x' se ha utilizado al comienzo del script para habilitar la función de depuración. A continuación, se tomará un nombre de archivo del usuario. Si el usuario no proporciona nombre de archivo, se imprimirá un mensaje. Si el nombre de archivo tomado del usuario no existe o no es un archivo, entonces se mostrará otro mensaje de error. Si el nombre de archivo válido se toma del usuario, entonces se imprimirá el contenido del archivo.

#!/bin/bash
#Enible la depuración
establecer -x
#Asegre el nombre de archivo del usuario
echo -n "Ingrese un nombre de archivo:"
Leer FN
#Chek si el nombre de archivo está vacío o no
if ["$ fn" == ""];
entonces
Falta el nombre de archivo "."
#Chek si el archivo existe o no
Elif [ ! -f "$ fn"];
entonces
#Mensaje de error de huella
echo "$ fn no existe."
demás
#Imprima el contenido del archivo
gato "$ fn"
FI

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior sin proporcionar ningún nombre de archivo. La salida muestra que el valor vacío se ha tomado como nombre de archivo. La condición 'si' para verificar un nombre de archivo vacío se ha devuelto verdadero para la entrada vacía. Por lo tanto, la instrucción 'Echo' para la impresión del mensaje de error se ha imprimido para la opción de depuración y el mensaje de error ","Falta el nombre de archivo"Ha sido impreso.

La siguiente salida aparecerá después de ejecutar el script anterior con un nombre de archivo. La salida muestra que la condición 'si' para verificar el nombre de archivo vacío se ha devuelto falso y la condición 'si' para verificar el archivo no existente también se ha devuelto falso. El nombre de archivo de entrada, archivo de prueba.TXT existe en la ubicación actual. Entonces el 'gato'Comando para leer el archivo de prueba.TXT Se ha ejecutado el archivo y el contenido del archivo ha sido impreso.

La siguiente salida aparecerá después de ejecutar el script anterior con un nombre de archivo. La salida muestra que la condición 'if' para verificar un nombre de archivo vacío se ha devuelto falso y la condición 'si' para verificar un archivo no existente se ha devuelto verdadero porque el archivo1.TXT no existe en la ubicación actual. Entonces el 'gato'El comando para leer el archivo no se ha ejecutado y el mensaje de error, ""archivo1.txt no existe."Ha sido impreso.

Conclusión

La tarea de depuración es una parte muy importante de cualquier lenguaje de programación para descubrir fácilmente el error del código. La tarea de depuración se realiza de diferentes maneras para diferentes lenguajes de programación. Múltiples formas de habilitar la función de depuración para el script bash y los usos del comando 'set -x' para depurar el script bash se han descrito en este tutorial.