viernes, 26 de marzo de 2010

Estado de Salida de un Comando Bash

En este articulo se hablara sobre los comandos shell y sus internos en bash. Un comando es una secuencia de palabras. La primera palabra indica el comando que sera ejecutado y las siguientes palabras son argumentos, un argumento puede ser las opciones o parámetros del programa.

Algunos de los comandos Unix que ejecutas en la linea de comandos son comandos shell. Por ejemplo ls, lpr y grep.

$ ls -alF

$ lpr archivo

$ grep "cadena" archivo

Comando Shell Exit

El valor de retorno de un comando es el estado exit o 128 + N si el comando es terminado por la señal N. El estado exit es usado para revisar el resultado (OK/falla) de la ejecución del comando. Si el estado de salida es 0 entonces el comando se ejecuto con exito. Si el comando falla el estado de salida no sera 0.


Valor ExitEstado Salida
0 (Cero)Exito
No 0Fallo
2Uso incorrecto
127Comando No encontrado
126No es un ejecutable

La variable Shell $?

La variable shell llamada $? es una variable interna especial la cual contiene el estado de salida del ultimo comando ejecutado.

  • Después de la ejecución de la función shell, $? retorna el estado de salida del ultimo comando ejecutado en una función.
  • Después de la ejecución de un código shell, $? retorna el estado de salida del ultimo comando ejecutado en el código.

Ejemplo de Código Shell que Explica el Estado de Salida

El siguiente es un código shell que muestra ejemplos de varios estados de salida de comandos:

$ cat exitstatus.sh
#! /bin/bash

echo -e "Ejecutado con Exito"
echo -e "====================="
echo "hola mundo"
# El estado de salida devuelve 0, porque el comando se ejecuto con exito
echo "Estado de Salida" $?

echo -e "Uso Incorrecto"
echo -e "====================="
ls --option
# Uso Incorrecto, por eso el estado de salida sera 2
echo "Estado de Salida" $?

echo -e "Comando no encontrado"
echo -e "====================="
bashscript
# El estado de salida devuelve 127, por que el codigo bash no encontro el comando.
echo "Estado de Salida" $?

echo -e "Comando no es un ejecutable"
echo -e "============================="
ls -l execution.sh
./execution.sh
# El estado de salida devuelve 126, por que no es un ejecutable
echo "Estado de Salida" $?

Ahora ejecuta el script exitstatus.sh para ver los resultados.

2 comentarios:

Anónimo dijo...

Sorry for my bad english. Thank you so much for your good post. Your post helped me in my college assignment, If you can provide me more details please email me.

Anónimo dijo...

Post bueniiiisimo!!!! muchas gracias