Al pasar por un script de shell, vi el término "$?". ¿Cuál es el significado de este término?
linux
shell-script
Renjith G
fuente
fuente
Respuestas:
$?
se expande al estado de salida de la canalización en primer plano ejecutada más recientemente. Consulte la sección Parámetros especiales del manual Bash .En términos más simples, es el estado de salida del último comando.
fuente
La respuesta de Cjm es correcta, pero
$?
se puede usar de manera tonta en los scripts de shell, y me gustaría advertir contra eso. Muchos scripts de shell incorrectos tienen un patrón repetido de código:Si es posible (las cuestiones de legibilidad a veces se entrometen), debe codificar esta situación de manera diferente:
Este último uso es más rápido, no contamina el espacio de nombres de las variables del shell con lo que equivale a variables temporales, a menudo puede ser mucho más legible para los humanos y fomenta el uso de "lógica positiva", la práctica de escribir condicionales sin negaciones, que tiene simplicidad en la mayoría de las situaciones. Elimina el uso de
$?
en su mayor parte.fuente
Además de lo que dijo cjm , si el valor de
$?
es 0, el proceso anterior terminó normalmente (o con éxito). De lo contrario, hubo algún error.fuente
diff
sale con un 0 si los archivos comparados son iguales, con un 1 si son diferentes y 2 es un error.$?
-El estado de salida del último comando ejecutado.$0
-El nombre del archivo del script actual.$#
-El número de argumentos suministrados a un script.$$
-El número de proceso del shell actual. Para los scripts de shell, este es el ID de proceso bajo el cual se están ejecutando.fuente
PS proporcione el estado de ejecución del último comando de ejecución en el indicador. El valor '0' indica que el comando se ejecutó con éxito y '1' no es correcto.
fuente
$?
determina el estado de salida del comando ejecutado.$
seguido de números (por ejemplo$1
,$2
etc.) representa los parámetros en el script de shell.fuente