[gull] bash et condition avec le if

Rémi Voirin remi at lags.is
Sun Apr 3 21:48:46 CEST 2022


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
> gull at forum.linux-gull.ch
> https://forum.linux-gull.ch/mailman/listinfo/gull


More information about the gull mailing list