Pages : 1
#1 Le 06/05/2007, à 20:41
- gilbert
[bash] test avec if
Bonjour tout le monde,
voilà, je débute avec le bash, et suis encore loin d'être vraiment à l'aise avec. Dans un script, j'ai une fonction qui doit supprimer tous les fichiers temporaires (qui se terminent par le caractère ~) d'un répertoire s'il y en a, mais sans forcément en connaitre les noms des fichiers, voici le code que j'ai écrit :
if [ -a *~ ]; then
rm *~
echo "Fichiers temporaires supprimés"
else
echo "Aucun fichiers temporaires trouvés"
fi
malheureusement, à l'exécution de mon scipt j'ai le message d'erreur suivant :
bash: [: trop d'arguments
Alors comment puis-je modifier mon test ?
Merci beaucoup pour votre aide.
A+ Gilbert
Simplement moi-même..
Hors ligne
#2 Le 06/05/2007, à 20:50
- abetsic
Re : [bash] test avec if
Bonjour,
A ta place je ferai simplement un alias qui supprime les fichiers *~ du répertoire courant
exemple :
alias clean='rm -f *~'
Concernant ton script, je te conseille de jeter un coup d'oeil à "man test", l'option -a dans un test permet de faire un AND (et logique) entre deux expressions, il n'a pas vraiment de sens ici.
La syntaxe exacte pour ton test est :
if [ -f *~ ]; then
qui teste l'existence d'un fichier qui se finit par ~
Hors ligne
#3 Le 06/05/2007, à 20:57
- gilbert
Re : [bash] test avec if
Salut,
merci pour l'alias, ça améliore en effet un peu la lisibilité. Par contre, j'avais lu que -a retournait vrai si le fichier existe. -f retourne vrai si le fichier existe et est un fichier normal (donc pas un répertoire ou autre fichier spécial). Enfin bref, j'ai testé avec -f au lieu de -a, et ça change mon erreur qui devient :
bash: [: pourChaquefichier.type~ : opérateur binaire attendu
je m'empresse de lire le manuel de test.
Simplement moi-même..
Hors ligne
Pages : 1