GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué son los códigos de salida de Bash en Linux?

¿Qué es un código de salida

Cada script, comando o binario sale con un código de retorno. Puede ver este valor en la variable especial $? . Los códigos de retorno son numéricos y están limitados a estar entre 0 y 255 porque se usa un número entero de 8 bits sin signo. Si usa un valor de -1, devolverá 255. Cada ejecución termina con un código de salida, ya sea exitosa o no, con un mensaje de error o silenciosamente. Por ejemplo:

$ date ; echo $?
Sat Jan 18 08:06:07 IST 2020
0

Como puede ver, el código de salida es 0 porque el comando se ejecutó sin problemas. Ahora, probemos esto:

$ wrngcmd ; echo $?
-bash: wrngcmd: command not found
127

Es un comando que no se encuentra porque acabamos de escribir un montón de caracteres sin sentido.

Códigos de salida Bash reservados

Tan similar al código de salida "0" que denota el éxito del comando, bash tiene algunos códigos de salida reservados para diferentes situaciones. Entonces, idealmente, si está usando el comando de salida en un script y necesita especificar un código de salida, no use estos códigos de salida reservados, ya que pueden crear resultados contradictorios.

Número de código de salida Significado Ejemplo Comentarios
1 Catchall para errores generales sea "var1 =1/0" Errores diversos, como "dividir por cero" y otras operaciones no permitidas
2 Uso indebido de las funciones internas de shell función_vacía() {} Palabra clave o comando faltante
126 El comando invocado no puede ejecutarse /dev/null Problema de permisos o el comando no es un ejecutable
127 “comando no encontrado” comando_ilegal Posible problema con $PATH o un error tipográfico
128 Argumento inválido para salir salir 3.14159 exit solo acepta argumentos enteros en el rango de 0 a 255 (consulte la primera nota al pie)
128 +n Señal de error fatal "n" matar -9 $PPID del script $? devuelve 137 (128 + 9)
130 Script terminado por Control-C Ctrl-C Control-C es señal de error fatal 2, (130 =128 + 2, ver arriba)
255* Estado de salida fuera de rango salir -1 exit toma solo argumentos enteros en el rango de 0 a 255

Entendamos el código de salida “128 +n” con un ejemplo. Ejecute el ciclo interminable como se muestra a continuación:

#!/bin/bash    
while true; do    
echo ${$}    
done

Si ejecuta este script, imprimirá el mismo PID indefinidamente hasta que lo elimine o haga "CTRL + C". Intente hacer "CTRL+C" y vea cuál es el código de salida.

# sh test.sh
....
2582
2582
2582
2582
2582
2582
^C
geeklab$ echo $?
130

Como puede ver, el código de salida es "128+2", es decir, 130. De manera similar, si eliminamos el script usando "kill -9", el código de salida debería ser "128+9", es decir, 137. Veamos un ejemplo de eso también:

# sh test.sh
....
2582
2582
2582
...
# kill -9 [pid_of_script]
....
2602
2602
Killed: 9
geeklab$ echo $?
137


Linux
  1. ¿Qué es un usuario de Linux?

  2. Códigos de salida de la línea de comandos de Bash desmitificados

  3. ¿Qué son las páginas sucias en Linux?

  4. ¿Qué son los archivos dispersos en Linux?

  5. ¿Cuál es el propósito del código de partición de inicio de Linux 8302?

Comando de salida de Bash y códigos de salida

¿Qué son los inodos en Linux?

Código de salida de asignación de variables a sustitución de comandos en Bash

código de retorno grep de Linux

¿Qué se supone que debe hacer el comando de exportación en Linux?

¿Qué aplicaciones de edición de video están disponibles en Linux?