Pages : 1
#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
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,
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
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
Pages : 1