Pregunta Significado de $? en scripts de shell


Que hace

echo $?

significa en la programación Bash?


76
2017-08-30 18:33


origen


Respuestas:


Este es el estado de salida del último comando ejecutado.

Por ejemplo, el comando true siempre devuelve un estado de 0 y false siempre devuelve un estado de 1:

true
echo $? # echoes 0
false
echo $? # echoes 1

Del manual: (accesible por llamada man bash en tu caparazón)

$?Se expande al estado de salida de la tubería de primer plano ejecutada más recientemente.

Por convención, un estado de salida de 0 significa éxito, y el estado de devolución no cero significa falla. Aprender más acerca de estados de salida  en wikipedia.

Hay otras variables especiales como esta, como puede ver en este manual en línea: https://www.gnu.org/s/bash/manual/bash.html#Special-Parameters


91
2017-08-30 18:35



ps devuelve el valor de salida del último comando ejecutado. echo $? imprime ese valor en la consola. cero implica una ejecución exitosa, mientras que los valores distintos de cero se asignan a varios motivos de falla.

Por lo tanto, al crear scripts; Tiendo a usar la siguiente sintaxis

if [ $? -eq 0 ]; then
 # do something
else
 # do something else
fi

La comparación se debe hacer en iguales a 0 o no es igual a 0


6
2017-12-16 09:21



Tiene el último código de estado (valor de salida) de un comando.


5
2017-08-30 18:35



echo $? - Da el ESTADO DE SALIDA del comando ejecutado más recientemente . Este ESTADO DE SALIDA probablemente sea un número con CERO implicando Éxito y cualquier valor NON-ZERO que indique Fracaso

?  - Este es un parámetro / variable especial en bash.

ps - Da el valor almacenado en la variable "?".

Algunos parámetros especiales similares en BASH son 1,2, *, # (Normalmente se ven en el comando echo como $ 1, $ 2, $ *, $ #, etc.).

Espero que esto ayude....


4
2017-10-19 19:18



De http://www.gnu.org/s/bash/manual/bash.html#Special-Parameters

?
Expands to the exit status of the most recently executed foreground pipeline. 

2
2017-08-30 18:36



Da salida al resultado del último comando ejecutado de Unix

0 implies true
1 implies false

1
2018-03-17 07:06



Ver El manual de Bash debajo 3.4.2 Parámetros especiales:

? - Se expande al estado de salida de la tubería de primer plano ejecutada más recientemente.

Es un poco difícil de encontrar porque no está catalogado como $? (el nombre de la variable es "solo" ?) Ver también el estado de salida sección, por supuesto ;-)

Feliz codificación.


0
2017-08-30 18:39