Salut Cédric,

Dans les cas simples :

- -o et -a sont gérés par test (man test)

- || et && sont gérés par bash


Si je comprends bien, tu te demandes comment gérer les priorités dans les opérations || et && dans les if, quand il y en a plusieurs, en bash ?

Selon le man, partie "Lists" : Of these list operators, && and || have equal precedence, followed by ; and &, which have equal precedence.


Séparer en deux "if" pour marquer la priorité entre deux opérations "et" ou "ou", n'est-ce pas une bonne solution au moins pour la lisibilité ?


Autrement :

> [[ -n filepath ]]

-n c'est pour tester l'existence de contenu d'une variable, un filepath même inexistant va te retourner vrai car la chaine testée est forcément plus longue que "".


Bonne soirée !

Rémi


On 3/29/22 21:34, Cédric BRINER via gull wrote:
Salut à tous,

J'ai beau écrire pas mal de script en bash, j'ai toujours pas compris comment faire des if avec des "ou" ou avec des "et".

en python, je peux écrire
if ("a" == "b")and("c" == "c"):
  echo "succes"
else
  echo "pas succes"

comment peut-on faire un truc pareil en shell:
j'ai vu qu'il y a :
- l'opérateur "-o" "-a"
- l'opérateur || ou &&

et comment est-ce que ça fonctionne avec des trucs un peu plus complexe comme:
if (("a"=="b")or("a"=="d"))and("a"=="d")

Si quelqu'un a une bonne documentation sur le sujet.

et ce serait bien aussi de pouvoir faire un

if [[ -x filepath ]] and [[ -n filepath ]]

D'avance merci pour vos lumières.

cED
_______________________________________________
gull mailing list
[email protected]
https://forum.linux-gull.ch/mailman/listinfo/gull
_______________________________________________
gull mailing list
[email protected]
https://forum.linux-gull.ch/mailman/listinfo/gull

Répondre à