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> et2> code> rediriger deux types de sortie différents;> code> (ou1> code>) redirige quelle que soit la commande écrit sur sortie standard em> et2> 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.