Uso de códigos de estado de salida
Los códigos de estado de salida son valores numéricos devueltos por un comando o script para indicar si se completó con éxito. En sistemas Linux y similares a Unix:
- Un código de estado de salida
0 indica éxito.
- Un código de estado de salida distinto de cero (1 - 255) indica un error u otra condición excepcional.
Vamos a crear un script que utilice diferentes códigos de estado de salida basados en ciertas condiciones.
Primero, crea un nuevo archivo de script:
cd ~/project
touch status_codes.sh
Abre el archivo con nano:
nano status_codes.sh
Agrega el siguiente contenido:
#!/bin/bash
## Demonstrating exit status codes
## Check if a filename was provided as an argument
if [ $## -eq 0 ]; then
echo "Error: No filename provided"
echo "Usage: $0 <filename>"
## Exit with status 1 (general error)
exit 1
fi
filename=$1
## Check if the file exists
if [ ! -f "$filename" ]; then
echo "Error: File '$filename' not found"
## Exit with status 2 (file not found)
exit 2
fi
## Check if the file is readable
if [ ! -r "$filename" ]; then
echo "Error: File '$filename' is not readable"
## Exit with status 3 (permission denied)
exit 3
fi
## If we get here, everything is fine
echo "File '$filename' exists and is readable"
## Exit with status 0 (success)
exit 0
Guarda el archivo (Ctrl+O, Enter) y sal de nano (Ctrl+X).
Haz el script ejecutable:
chmod +x status_codes.sh
Ahora, probemos este script con diferentes escenarios.
Primero, ejecuta el script sin ningún argumento:
./status_codes.sh
Deberías ver:
Error: No filename provided
Usage: ./status_codes.sh <filename>
El script salió con el código de estado 1. Puedes verificar el código de estado de salida del último comando utilizando la variable especial $?:
echo $?
Deberías ver:
1
Ahora, creemos un archivo de prueba y ejecutemos el script de nuevo:
echo "This is a test file" > testfile.txt
./status_codes.sh testfile.txt
Deberías ver:
File 'testfile.txt' exists and is readable
Verifica el código de estado de salida:
echo $?
Deberías ver:
0
Esto indica que el script se completó con éxito.
Finalmente, intenta con un archivo que no existe:
./status_codes.sh nonexistent_file.txt
Deberías ver:
Error: File 'nonexistent_file.txt' not found
Verifica el código de estado de salida:
echo $?
Deberías ver:
2
Esto demuestra cómo se pueden utilizar diferentes códigos de estado de salida para indicar diferentes tipos de errores.