En parcourant un script Shell, j'ai vu le terme "$?". Quelle est la signification de ce terme?
$?
se développe jusqu'à l'état de sortie du dernier pipeline de premier plan exécuté. Voir section Paramètres spéciaux du manuel Bash .
En termes plus simples, c'est l'état de sortie de la dernière commande.
réponse de Cjm est correct, mais $?
peut être utilisé de manière ridicule dans les scripts Shell, et je voudrais mettre en garde contre cela. Beaucoup de mauvais scripts Shell ont un modèle de code répété:
run_some_command
EXIT_STATUS=$?
if [ "$EXIT_STATUS" -eq "0" ]
then
# Do work when command exists on success
else
# Do work for when command has a failure exit
fi
Si cela est possible (les problèmes de lisibilité peuvent parfois empiéter), vous devez coder cette situation différemment:
if run_some_command
then
# Do work when command exists on success
else
# Do failure exit work
fi
Cette dernière utilisation est plus rapide, ne contamine pas l'espace de noms des variables de Shell avec ce qui équivaut à des variables temporaires, peut souvent être beaucoup plus lisible pour les humains et encourage l'utilisation de la "logique positive", la pratique de l'écriture conditionnelle sans négation, qui a des capacités cognitives simplicité dans la plupart des situations. Il supprime l'utilisation de $?
pour la plupart.
En plus de ce que cjm a dit , si la valeur de $?
est 0, alors le processus précédent s'est terminé normalement (ou avec succès). Sinon, il y a eu une erreur.
$?
- L'état de sortie de la dernière commande exécutée.
$0
- Le nom de fichier du script actuel.
$#
- Le nombre d'arguments fournis à un script.
$$
- Le numéro de processus du shell actuel. Pour les scripts Shell, il s'agit de l'ID de processus sous lequel ils s'exécutent.
$? nous fournir l'état d'exécution de la dernière commande d'exécution sur invite. La valeur '0' indique que la commande a été exécutée avec succès et '1' est pour échec.