<Anterior | Contenido | Siguiente>
Estado de salida
Los comandos (incluidos los scripts y las funciones de shell que escribimos) emiten un valor al sistema cuando terminan, llamado estado de salida. Este valor, que es un número entero en el rango de 0 a 255, indica el éxito o el fracaso de la ejecución del comando. Por convención, un valor de cero indica éxito y cualquier otro valor indica fracaso. El shell proporciona un parámetro que podemos usar para examinar el estado de salida. Aquí lo vemos en acción:
[yo @ linuxbox ~] $ ls -d / usr / bin
/ usr / bin
[yo @ linuxbox ~] $ echo $?
0
[yo @ linuxbox ~] $ ls -d / bin / usr
ls: no se puede acceder a / bin / usr: No existe tal archivo o directorio [me @ linuxbox ~] $ echo $?
2
[yo @ linuxbox ~] $ ls -d / usr / bin
/ usr / bin
[yo @ linuxbox ~] $ echo $?
0
[yo @ linuxbox ~] $ ls -d / bin / usr
ls: no se puede acceder a / bin / usr: No existe tal archivo o directorio [me @ linuxbox ~] $ echo $?
2
Estado de salida
En este ejemplo, ejecutamos el ls comando dos veces. La primera vez, el comando se ejecuta con éxito. Si mostramos el valor del parámetro $?, vemos que es cero. Ejecutamos el ls comando por segunda vez (especificando un directorio inexistente), produciendo un error, y examina el parámetro $? de nuevo. Esta vez contiene un 2, lo que indica que el comando encontró un error. Algunos comandos usan diferentes valores de estado de salida para proporcionar diagnósticos de errores, mientras que muchos comandos simplemente salen con un valor de uno cuando fallan. Las páginas de manual a menudo incluyen una sección titulada "Estado de salida", que describe qué códigos se utilizan. Sin embargo, un cero siempre indica éxito.
El shell proporciona dos comandos integrados extremadamente simples que no hacen nada excepto terminar con un estado de salida cero o uno. los su verdadero El comando siempre se ejecuta correctamente y el false El comando siempre se ejecuta sin éxito:
[yo @ linuxbox ~] $ su verdadero [yo @ linuxbox ~] $ echo $? 0
[yo @ linuxbox ~] $ false [yo @ linuxbox ~] $ echo $? 1
[yo @ linuxbox ~] $ su verdadero [yo @ linuxbox ~] $ echo $? 0
[yo @ linuxbox ~] $ false [yo @ linuxbox ~] $ echo $? 1
Podemos usar estos comandos para ver cómo if funciona la declaración. Que if La declaración que realmente hace es evaluar el éxito o el fracaso de los comandos:
[yo @ linuxbox ~] $ si es verdad; luego repita "Es verdad"; fi
Es verdad.
[yo @ linuxbox ~] $ si es falso; luego repita "Es verdad"; fi
[yo @ linuxbox ~] $
[yo @ linuxbox ~] $ si es verdad; luego repita "Es verdad"; fi
Es verdad.
[yo @ linuxbox ~] $ si es falso; luego repita "Es verdad"; fi
[yo @ linuxbox ~] $
El comando echo "Es verdad". se ejecuta cuando el comando siguiente if se ejecuta correctamente y no se ejecuta cuando el comando siguiente if no se ejecuta correctamente. Si sigue una lista de comandos if, se evalúa el último comando de la lista:
[yo @ linuxbox ~] $ si es falso; cierto; luego repita "Es verdad"; fi Es cierto.
[me @ linuxbox ~] $ si es cierto; falso; luego repita "Es verdad"; fi [yo @ linuxbox ~] $
[yo @ linuxbox ~] $ si es falso; cierto; luego repita "Es verdad"; fi Es cierto.
[me @ linuxbox ~] $ si es cierto; falso; luego repita "Es verdad"; fi [yo @ linuxbox ~] $