2009-07-12 3 views

Répondre

5

|| est opérateur 'ou'.

Dans l'exemple de code ci-dessus, il exécutera d'abord less /tmp/manual et s'il renvoie une valeur qui n'est pas vraie, il exécutera read. Si la première commande renvoie une valeur vraie, la commande de lecture n'est pas exécutée en raison d'un court-circuit.

Merci à Michiel: veuillez noter que l'opérateur n'est pas commutatif de sorte qu'il ne soit pas mathématique OU.

+3

@MitMaro Ceci est un nitpick, mais le comportement que vous décrivez n'est pas équivalent à une logique ou. Un vrai 'ou' est commutatif, c'est-à-dire (a \/b) = (b \/a). –

+0

@Michiel: Votre point est excellent! - J'étais confus parce que mes deux commandes sont réussies mais seulement la première est exécutée. --- Cela me suggère que je peux supprimer la dernière partie de mon code. –

3

Ce que dit MitMaro. C'est un paramètre pour le shell, ou/bin/sh dans ce cas. (Techniquement, ce n'est pas un "paramètre" (c'est un terme différent) mais cela fait partie de la "grammaire" du shell.)

Pour plus de détails, vous pouvez lire le man page on sh. Ce que vous cherchez est dans la section "Listes".

Snippet:

Une liste OU a la forme

command1 || command2 

commande_2 est exécutée si, et seulement si command1 renvoie un état de sortie non nul .

L'état de retour des listes AND et OR est l'état de sortie de la dernière commande exécutée dans la liste.

+0

Je n'ai jamais su où chercher dans les pages de manuel. Merci GreenReign. – MitMaro