Je suis nouveau à Bash Scripting et j'essaie de comprendre la ligne suivante:
{ echo "kubectl pre-req is missing."; exit 1; }
4 Réponses :
Si la commande kubectl code> se ferme avec un état de sortie non zéro em>, le code après le
|| code> sera exécuté.
$ sh -c 'exit 42' && echo "exit status zero" || echo "exit status non-zero"
exit status non-zero
$ sh -c 'exit 0' && echo "exit status zero" || echo "exit status non-zero"
exit status zero
Notez que ce n'est pas exactement i> si / alors / alors: si la commande entre && code> et
|| code> échoue, la commande après
|| code> sera exécuté.
Dans ce cas, il n'exécutera que la partie ECHO lorsque le code de sortie de la première commande (kubecl ..) n'est pas 0 (I.E: échoue). La sortie || code> est un logique ou em> stry> basé sur le code de sortie de commande précédent (0 signifie vrai et une autre valeur est fausse). < / p>
1 code> est de définir l'échec de la commande entière, sinon le code de sortie sera 0 à partir de la commande ECHO. P>
I Inomplet Cette partie:
Commande -V Kubectl> / dev / null 2> & 1 code> Donc, si elle échoue ou non, nous redirigeons la sortie sur / dev / null dans laquelle si je le comprends correctement signifie que cela signifie que si je le comprends correctement signifie l'ignorer dans tous les cas. P>
Vous avez mal compris cela; Aucune partie de la commande
-v kubectl> / dev / null 2> & 1 code> a une connexion à "si elle échoue" vs. "non". p>
plutôt,
> code> et
2> code> rediriger deux types de sortie différents;
> code> (ou
1> code>) redirige quelle que soit la commande écrit sur sortie standard em> et
2> code> redirige quelle que soit la commande Écrit sur erreur standard em>. Si la commande écrit quelque chose à la sortie standard est indépendante de savoir s'il finit par réussir ou échouer; Qu'il écrit quelque chose à une erreur standard est indépendant de savoir si cela finit par réussir ou échoué; et si cela écrit quelque chose à la sortie standard est indépendant de savoir si cela écrit quelque chose à une erreur standard. p>
Par exemple, voici une commande qui imprime à la fois une sortie standard et une erreur standard, puis renvoie avec succès avec succès: P>
( echo "this is on standard output" ; echo "this is on standard error" >&2 ; exit 1 )
La commande curl code> (qui fait des choses comme le téléchargement de pages Web) en est un bon exemple. Par défaut, il envoie des données téléchargées sur la sortie standard et les mises à jour d'état (par exemple, téléchargez la progression) à une erreur standard. Donc, il écrit à l'erreur standard si il y a un problème.
CURL CODE> utilise également son code de sortie pour indiquer si une erreur est survenue et s'il y avait une erreur, la nature générale de celui-ci (E.g. 0 = succès, 7 = Échec de la connexion à l'hôte, etc.). Supprimer les messages, avec
2> / dev / null code> (ou similaire) ou avec
CURL code> 'S
-s code> ou
- -Silent code> option n'a aucun effet sur le code de sortie.
Pour un exemple simplifié permet de regarder p> Que se passe-t-il est que si CMD1 réussit (c.-à-d. Code de sortie 0), puis cmd2 ne sera pas effectuée. CMD2 ne sera effectué que si cmd1 échoue. p> C'est une raison pour laquelle les codes de sortie de retour sont si importants. P> Pour plus de détails, veuillez regarder ce post: || code> est utilisé ou conditionner ou conditionne dans Bash.