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". Devuelve0en caso de éxito o un número entero en el rango1 - 255de 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).$statuspara 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 deIFScomo 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
0generalmente significa que todo está bien.Otros valores indican errores. La mayoría de las aplicaciones devuelven
1valores personalizados. Si no se encontró un comando, la variable generalmente contiene127Si 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; }