rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[shell unix] if ... then ... else ... fi

Posté par Pitu, le mardi 20 mai 2003 à 15:46:20
Bonjour à toutes et à tous.

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
Répondre à Pitu  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fatabien, le mardi 20 mai 2003 à 15:51:38
Je pense que tu peux tester la syntaxe suivante :
if (!(test -d $nomrep))
C'est la plus courante.

fatabien
www.rock-insight.fr.st
Répondre à fatabien

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pitu, le mardi 20 mai 2003 à 15:57:43
Merci mais ...
if (!(test -d $nomrep))
=> !(test: not found

Si t'as une autre syntaxe à me soumettre ...
 
   (:•Þ  Pitu
Répondre à Pitu

2


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
yro, le mardi 20 mai 2003 à 15:51:40
Pourquoi pas faire un bête echo avec rien pour ton instruction qui fasse rien?
----===Yro===----
Répondre à yro

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pitu, le mardi 20 mai 2003 à 15:59:54
Merci du conseil, Yro, mais ce script va traiter de gros volumes, et plusieurs dizaines de milliers de fichiers. Tu comprendras donc que je souhaite éviter au maximum l'utilisation de la commande echo
Mais n'y en a-t-il pas une autre qui ne fasse strictement rien ?

 
   (:•Þ  Pitu
Répondre à Pitu

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pitu, le mardi 20 mai 2003 à 16:11:14
Bon, j'ai ENFIN réussi à trouver la syntaxe de ce test.
Pour info, c'est tout simplement
if test ! -d $nomrep
Sans parenthèse aucune ...

Maintenant, je serai tout de même curieux de savoir s'il existe une commande peu couteuse et qui ne fasse rien.

Merci aux bonnes volontés qui se sont penchées sur mon problème.

a+
 
   (:•Þ  Pitu
Répondre à Pitu

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jisisv, le mardi 20 mai 2003 à 16:33:13
Hello,
sous BASH, true ou false semble faire l'affaire...
if test -d hornua/; then
true
else
echo SOMETHING
fi
echo $?

Johan

The software said "Requires Windows98, Win2000, or bett­er,
So I installed Unix.
Répondre à jisisv

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pitu, le mardi 20 mai 2003 à 16:49:05
Voila ce que je cherchais ...
Merci Jisisv !

 
   (:•Þ  Pitu
Répondre à Pitu

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fat_cartman, le mercredi 21 mai 2003 à 11:50:14
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... 
Répondre à fat_cartman

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
julien, le mardi 16 janvier 2007 à 11:24:53
cartman c est pas if ! [ -d $nomrep ] , c est
if [ ! -d ${nomrep} ] car le test c est [ donc on peut pas mettre le ! avant.
tous les espaces sont importants.
Répondre à julien

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
doomwatcher, le jeudi 13 décembre 2007 à 13:49:51
Désolé cartman mais ";" est loin d'être une commande qui ne fait rien!!!

c'est utilisé pour lancer de manière séquentielle une série de commande... ;-)
Répondre à doomwatcher

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
adonis, le jeudi 13 septembre 2007 à 08:40:51
salu j'essaye depuis quelques heures de faire un tout ptit script mais j'arrive pas.
je veux lancer une commandes scp tout les 30 minutes.

if date +%M=30 then
scp ; j'ai essayé avec echo
fi

la condition date +%M est toujourd valide.
Merci de m'aider.
Répondre à adonis

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le jeudi 13 septembre 2007 à 09:11:58
Salut,

Essaie plutôt comme ça :
if [ "$(date +%M)" = 30 ]; then ... ; fi
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dubcek, le jeudi 13 septembre 2007 à 10:44:12
hello
ou avec la commande at dans un script:

scp ....
at now+30m -f nom_du_script
Répondre à dubcek

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
adonis, le jeudi 13 septembre 2007 à 12:37:35
merci
mais j'ai utilisé la commnde sleep dans une boucle while "boucle infini"
qui a dit que les boucles infinis sont tres dangereuses dans la programmation.
l'execution du processus est en arriere plan et je peut terminer son execution a l'aide de la commande kill

merci comme meme
Répondre à adonis

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Matthour, le jeudi 3 avril 2008 à 15:35:17
une instruction qui ne fait rien : continue
Répondre à Matthour
Logiciels pertinents trouvés dans les téléchargements
Télécharger CygWin 1.5.24-2CygWin - Cygwin est un environnement UNIX pour Windows composé: d'un shell Unix d'une librairie dynamique (DLL) chargée de...Catégorie: Développement
Licence: Open Source
Télécharger Unison 2.24.6Unison - Unison est un logiciel de synchronisation de répertoires. Il est capable de travailler de manière bidirectionnelle, c'est...Catégorie: Gestion de fichiers
Licence: Open Source
Télécharger foXpose   0.6foXpose - Pour naviguer plus rapidement et plus efficacement avec Firefox, afficher les onglets ouverts sous forme d'aperçu. FoXpose...Catégorie: Extensions Firefox
Licence: Freeware/gratuit
Télécharger Firefox 3.0.1Firefox - Mozilla Firefox 3 est un excellent navigateur qui peut fonctionner à côté d' Internet Explorer ou le remplacer. Il...Catégorie: Navigateurs
Licence: Open Source
Plus de logiciels gratuits sur « [shell unix] if ... then ... else ... fi »