GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué hace echo $? ¿hacer?

Desde man bash :

ps Se expande al estado de salida de la canalización en primer plano ejecutada más recientemente.

echo $? devolverá el estado de salida del último comando. Tienes 127 ese es el estado de salida del último comando ejecutado con algún error (lo más probable). Los comandos al finalizar con éxito salen con un estado de salida de 0 (más probablemente). El último comando dio salida 0 desde el echo $v en la línea anterior terminó sin error.

Si ejecutas los comandos

v=4
echo $v
echo $?

Obtendrá resultados como:

4 (from echo $v)
0 (from echo $?)

Prueba también:

true
echo $?

Obtendrás 0 .

false
echo $?

Obtendrás 1 .

El true el comando no hace nada, solo sale con un código de estado 0; y el false El comando tampoco hace nada, solo sale con un código de estado que indica una falla (es decir, con el código de estado 1 ).


$? es útil en shellscripts como una forma de decidir qué hacer dependiendo de cómo funcionó el comando anterior (verificando el estado de salida). Podemos esperar que el estado de salida sea 0 cuando el comando anterior funcionó (finalizó con éxito), de lo contrario, un valor numérico distinto de cero.

Ejemplo de demostración:

#!/bin/bash

patience=3

read -t "$patience" -p "Press 'Enter' if you run Unix or Linux, otherwise press 'ctrl+d' "

status="$?"

if [[ $status -eq 0 ]]
then
 echo "That's great :-)"
elif [[ $status -eq 1 ]]
then
 echo "(exit status=$status)
You are welcome to try Unix or Linux :-)"
else
 echo "(exit status=$status)
You did not answer within $patience seconds. Anyway :-)"
fi
echo "'Unix & Linux' is a question/answer web site for
Unix and Linux operating systems"

Puede preguntar cómo ejecutar un shellscript bash sin Unix o Linux;-)


Linux
  1. ¿Qué significa "-" (doble guión)?

  2. Que hace ?

  3. ¿Qué hace Exec 3?

  4. ¿Qué hace realmente Libgl_always_indirect=1?

  5. ¿Qué devuelve malloc(0)?

¿Qué hace Bamfdaemon?

¿Qué hace poll() con un tiempo de espera de 0?

Origen de un hilo de kworker

¿Qué hace ulimit -s ilimitado?

¿Qué significa set -e en un script bash?

¿Qué hace la -e en un bash shebang?