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 06/05/2007, à 21: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, à 21: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, à 21: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