Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/01/2014, à 20:49

soupaloignon

Faire une suite de if

Bonsoir à tous,

J'ignore si le titre du message est représentatif du problème que j'ai, mais je n'ai pas trouvé mieux ...

Je voudrais enchaîner deux actions, qui n'ont aucun rapport l'une avec l'autre.

if [ -f "CheminEtMonNomDeFichier" ] ; then
FaireActionA
else
exit
fi

if [ -d "CheminEtMonRepertoire" ] ; then
FaireActionB
else
exit
fi

Bien évidement cela coince dès le 1er if si le fichier existe n'existe pas, puisque le "else" correspond à exit. Donc si le fichier existe nexiste pas mon 2ème if n'est pas lancé.

Ma question : Que faudrait il mettre à la place de exit pour que cela puisse passer au 2ème if
Question subsidiaire : Est ce que enchaîner ces 2 actions de cette manière est "propre" ou bien y a t'il une manière plus élégante de procéder

Merci d'avance pour vos réponses

Dernière modification par soupaloignon (Le 12/01/2014, à 21:17)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 12/01/2014, à 21:03

Korak

Re : Faire une suite de if

Bonjour,

Tu es sûr que le else est obligatoire?


OS: Ubuntu 22.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF   Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur.   Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !

Hors ligne

#3 Le 12/01/2014, à 21:05

pingouinux

Re : Faire une suite de if

Bonsoir,
Tu veux sans doute dire que ça coince si le fichier n'existe pas, pas s'il existe.
Voici une façon de faire

ier=0
if [ -f "CheminEtMonNomDeFichier" ] ; then
   FaireActionA
else
   ier=1
fi

if [ -d "CheminEtMonRepertoire" ] ; then
   FaireActionB
else
   ier=1
fi

[ $ier = 1 ] && exit

Hors ligne

#4 Le 12/01/2014, à 21:11

soupaloignon

Re : Faire une suite de if

Korak a écrit :

Tu es sûr que le else est obligatoire?

En fait je ne sais pas, je suis toujours parti du principe qu'il fallait mettre un else et une action "nulle" si le if n'est pas vrai. Mais tu as peut être raison, je vais tester sans else.

Merci pour la piste potentielle


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#5 Le 12/01/2014, à 21:16

soupaloignon

Re : Faire une suite de if

Merci pour ta réponse pingouinux,

pingouinux a écrit :

Tu veux sans doute dire que ça coince si le fichier n'existe pas, pas s'il existe.

Oup's, oui effectivement, je me suis trompé dans le libellé, je modifie le post initial ...

Stp, tu peux m'expliquer le :
ier=0 / ier=1 / [ $ier = 1 ] && exit

Dernière modification par soupaloignon (Le 12/01/2014, à 21:17)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#6 Le 12/01/2014, à 21:19

Compte anonymisé

Re : Faire une suite de if

La solution avec un seul if et sans variable :

if [ -f "CheminEtMonNomDeFichier" ] ; then
FaireActionA
elif  [ -d "CheminEtMonRepertoire" ] ; then
FaireActionB
else
FaireActionC (éventuel)
fi

Cordialement

#7 Le 13/01/2014, à 00:00

pingouinux

Re : Faire une suite de if

soupaloignon #5 a écrit :

Stp, tu peux m'expliquer le :
ier=0 / ier=1 / [ $ier = 1 ] && exit

ier est initialisé à 0. Si un des deux tests échoue (ou les deux) il vaudra 1 à la fin.

[ $ier = 1 ] && exit

est équivalent à

if [ $ier = 1 ]; then
   exit
fi

Modifié :
Si les deux tests ne peuvent pas être vérifiés simultanément, c'est-à-dire si "CheminEtMonNomDeFichier" et "CheminEtMonRepertoire" sont identiques, la solution d'Anonyme68 #6 est préférable.
Si les deux tests sont vrais simultanément, sa solution ne permet d'exécuter que FaireActionA.

Dernière modification par pingouinux (Le 13/01/2014, à 07:18)

Hors ligne