La pregunta es bastante directa. Puedo obtener el código de salida del comando anterior usando $?
. ¿Pero qué es exactamente?
No creo que sea una variable, porque no puede tener caracteres especiales en el nombre de la variable que no sea _
.
foo?foo=10
dará como resultado el error: foo?foo=10: command not found
Entonces, si no es una variable, ¿qué es? ¿Hay otros como este?
command-line
bash
daltonfury42
fuente
fuente
Respuestas:
¿Qué es?
$?
es una variable integrada que almacena el estado de salida de un comando, función o el script en sí.$?
lee el estado de salida del último comando ejecutado. Después de que una función regresa,$?
da el estado de salida del último comando ejecutado en la función. Esta es la forma en que Bash le da a las funciones un "valor de retorno". Devuelve0
en caso de éxito o un número entero en el rango1 - 255
de error.¿Hay otros como él también?
Sí, hay varias variables incorporadas en bash. Puedes ver una lista aquí . Consulte: http://www.tldp.org/LDP/abs/html/exit-status.html
fuente
dash
,ksh
,zsh
, entre otros).$status
para el mismo propósito$?
es una variable pero especial, por eso se permiten caracteres especiales.($?)
Se expande al estado de salida de la canalización en primer plano ejecutada más recientemente.No es el único, el shell trata varios parámetros especialmente. Estos parámetros solo pueden ser referenciados; la asignación a ellos no está permitida:
Fuentes:
fuente
"$*"
no es solo todos los parámetros posicionales como una sola palabra, sino todos los parámetros posicionales separados por el primer carácter deIFS
como una sola palabra. Dado que el resultado estará sujeto a la división de campos si no se cita, el efecto es como si$@
se usara en el caso no citado .$?
es un parámetro de shell especial (variable).En general, todas las variables definidas por el usuario deben nombrarse utilizando solo los caracteres de la clase de caracteres,
[:alnum:]
es decir[a-zA-Z0-9_]
(tampoco puede comenzar con[0-9]
).En pocas palabras,
$?
es una variable especial ( y hay bastantes de estas ) que puede considerarse como una característica interna del propio shell que proporciona el código de salida del comando anterior (ya sea exitoso o fallido).Puede leer esto para tener más idea sobre las variables.
fuente
$?
es una variable especial en bash que siempre contiene el código de retorno / salida del último comando ejecutado.Puede verlo en una terminal ejecutando
echo $?
.Los códigos de retorno están en el rango [0; 255].
Un código de retorno
0
generalmente significa que todo está bien.Otros valores indican errores. La mayoría de las aplicaciones devuelven
1
valores personalizados. Si no se encontró un comando, la variable generalmente contiene127
Si desea establecer esta variable en un valor específico, puede hacerlo fácilmente
bash -c "exit 5"
para devolver, por ejemplo, el código de retorno5
.fuente
setstatus() { return 5; }