Entiendo que si ejecuto un comando en el shell con los operadores de signo y, por ejemplo, command1&&command2
y si el primer comando se ejecuta correctamente, lo hará con un estado de salida cero.
¿Es esto similar o diferente a la lógica booleana en la que 0 es falso y 1 es verdadero o lo he entendido incorrectamente?
¿El tipo de caparazón que usas hace alguna diferencia? Actualmente estoy ejecutando Bourne-Again Shell.
Respuesta1
Shell en su mayoría es 0 para indicar cero errores y éxito, por lo que sí, en este sentido es cierto lógicamente, a diferencia de muchos lenguajes de programación donde 0 generalmente es falso. Aunque los lenguajes modernos tienden a tener distintos valores lógicos de verdadero y falso en la actualidad.
Respuesta2
La mejor razón es que en realidad sólo hay un "éxito", pero hay múltiples razones para un "fracaso": archivo no encontrado, error de argumento, error computacional, etc. Esta fue una convención del sistema operativo, no solo del shell. , en las comunicaciones entre procesos: el código de retorno enviado por la exit(2)
llamada al sistema y recibido por la wait(2)
llamada.