[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