En parcourant un script shell, j'ai vu le terme "$?". Quelle est la signification de ce terme?
linux
shell-script
Renjith G
la source
la source
Réponses:
$?
passe au statut de sortie du pipeline de premier plan exécuté le plus récemment. Voir la section Paramètres spéciaux du manuel de Bash .En termes plus simples, il s'agit du statut de sortie de la dernière commande.
la source
La réponse de Cjm est correcte, mais
$?
peut être utilisée de manière idiote dans les scripts shell, et je tiens à le mettre en garde. Beaucoup de mauvais scripts ont un motif de code répété:Si possible (les problèmes de lisibilité sont parfois importuns), vous devriez coder cette situation différemment:
Cette dernière utilisation est plus rapide, ne contamine pas l'espace de nom de variable du shell avec ce qui équivaut à des variables de temp, 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égations, qui a des effets cognitifs. simplicité dans la plupart des situations. Il élimine l'utilisation de
$?
la plupart des.la source
En plus de ce que cjm a dit , si la valeur de
$?
est 0, le processus précédent s'est terminé normalement (ou avec succès). Sinon, il y a eu une erreur.la source
diff
quitte avec un 0 si les fichiers comparés sont les mêmes, avec un 1 s'ils sont différents et 2 est une erreur.$?
-L'état de sortie de la dernière commande exécutée.$0
-Le nom du fichier du script en cours.$#
-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.la source
$? Indiquez-nous l'état d'exécution de la dernière commande d'exécution à l'invite. La valeur '0' indique que la commande a été exécutée avec succès et que '1' signifie échec.
la source
$?
détermine le statut de sortie de la commande exécutée.$
suivi de chiffres (par exemple$1
,$2
etc.) représente les paramètres du script shell.la source