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 Exit | Estado Salida |
---|---|
0 (Cero) | Exito |
No 0 | Fallo |
2 | Uso incorrecto |
127 | Comando No encontrado |
126 | No 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:
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.
Post bueniiiisimo!!!! muchas gracias
Publicar un comentario