[shell unix] if ... then ... else ... fi
bibiman23 Messages postés 45 Statut Membre -
Après plus de 2 heures de recherches, je capitule :
J'ai besoin de faire un tout bête conditionnement, et je n'y arrive pas :
Je souhaite tester l'existence d'un répertoire, et s'il n'existe pas, le créer.
2 solutions :
1/
if test -d $nomrep
then {---> Là, il me faut une instruction qui ne fasse rien
}
else {
echo 'Creation du repertoire' $nomrep
mkdir -p $nomrep
}
fi
=> Quelle instruction "vide" puis-je utiliser ?
2/ Tout simplement tester la non-existence du répertoire. Mais je n'y arrive pas non plus :
if !(test -d $nomrep) ... non
if test !(-d $nmrep) ... non plus
if test (!(-d $nomrep)) ... toujours pas
=> Comment formuler mon test ?
Merci d'avance.
Snifff ... j'ai honte de ne pas avoir trouvé tout seul ...
(:•Þ Pitu
20 réponses
Le fil explore comment tester l'existence d'un répertoire en shell et le créer s'il n'existe pas, en comparant test -d et les tests équivalents. La solution claire propose d'utiliser if ! [ -d "$nomRep" ]; then ... pour tester l'inexistence et créer le répertoire ensuite, avec des espaces autour des crochets. D'autres réponses évoquent l'instruction vide ; comme opérateur nulle, ou true/false, mais la méthode test/[ -d ] reste la plus utilisée selon le contexte. En pratique, on peut aussi archiver l'ancien répertoire puis créer le nouveau avec mkdir -p, pour assurer une exécution robuste dans des scripts.
-
Hé les gars y'a plus simple!
En shell, l'instruction vide, ou nulle, comme vous voulez, existe: c'est ";". Et pour test, essaie avec cette syntaxe:
if ! [ -d $nomRep ] .....
En effet, les crochets sont l'abbreviation de la cmd test. Mais faut pas oublier de mettre des espaces un peu partout autour, sinon ca marche pas, et on se prend la tete vite fait pour qqchose d'invisible.
Voila!
Fat_Cartman,
Parce que je le vaux bien...