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 01/06/2022, à 10:51

FiveStorm

[Résolu] Vérification de suppression multiple Script Bash

Bonjour à tous/tes,

Je suis entrain de rédiger plusieurs scripts Bash et je me heurte à un problème que je n'arrive pas à résoudre.
Dans une partie de mon script, je supprime tous les fichiers dont le nom commence par DH.
Je souhaite ensuite vérifier que ces fichiers ont bien été supprimés.

En ligne de commande cela fonctionne très bien mais dans mon script ça ne fonctionne pas.

clientPath=/home/$USER/messagerie/$client

rm $clientPath/DH*
if [ "$(ls $clientPath | grep DH*)" == "" ]; then 
       echo "Client : Paramètres supprimés "
else 
       echo "Client : Paramètres non supprimés"
fi

Pouvez-vous m'aider ? Je pense qu'il doit y avoir un problème de syntaxe ?
Voici l'erreur à l’exécution du script :

Resultat script

Vous remerciant par avance de l'attention que vous voudrez bien porter à mon message,
Bonne journée smile

Dernière modification par FiveStorm (Le 01/06/2022, à 11:49)

Hors ligne

#2 Le 01/06/2022, à 11:16

Watael

Re : [Résolu] Vérification de suppression multiple Script Bash

d'abord, on ne sait pas ce que contient $client.
ensuite, il faut toujours mettre des guillemets autour des Développements de paramètres. TOUJOURS,  à moins de savoir poiurquoi. smile

enfin, on n'utilise pas ls dans un script : c'est une source d'emm...ments innombrables.
en bash, on passe facilement par un tableau :

$ shopt -s nullglob
$ rm "$chemin"/foo*
$ liste=( "$chemin"/foo* )
$ (( ${#lsite[*]} )) && echo "on se demande pourquoi il resterait des fichiers !" || echo "plus de fichiers"

avec un shell plus POSIX, je peux admettre l'emploi de ls :

if ls "$chemin"/foo* >/dev/null 2>&1
then
   echo "on se demande pourquoi il resterait des fichiers !" 
else
   echo "plus de fichiers"
fi

pour rappel, la structure d'un if est :

if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else COMMANDES; ] fi #Les crochets indiquent des syntaxes facultatives

où le premier COMMANDES peut être test (ou son alias [ ... ]), ou n'importe quelle autre commande.

Dernière modification par Watael (Le 01/06/2022, à 11:17)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 01/06/2022, à 11:24

nany

Re : [Résolu] Vérification de suppression multiple Script Bash

Bonjour,


gros +1

Et j’ajoute que le paramètre -v de la commande rm est largement suffisante.

Hors ligne

#4 Le 01/06/2022, à 11:35

MicP

Re : [Résolu] Vérification de suppression multiple Script Bash

Bonjour

J'ajoute que si la commande rm n'a pas pu faire ce qu’on lui demandait,
le code d'erreur retourné par la commande rm sera différent de zéro.

Hors ligne

#5 Le 01/06/2022, à 11:49

FiveStorm

Re : [Résolu] Vérification de suppression multiple Script Bash

Bonjour,

Merci à tous pour vos éclaircissements, la solution proposée par Watael me convient parfaitement ! ( Je ferai plus attention à la structure de mes if à l'avenir ) smile

Hors ligne

#6 Le 01/06/2022, à 11:55

Watael

Re : [Résolu] Vérification de suppression multiple Script Bash

MicP a écrit :

Bonjour

J'ajoute que si la commande rm n'a pas pu faire ce qu’on lui demandait,
le code d'erreur retourné par la commande rm sera différent de zéro.

donc, simplement :

if rm "$chemin"/foo* 2>/tmp/script.log
then
   echo "plus de fichiers, normalement."
else
   echo "affichage des erreurs"
   cat /tmp/script.log
fi

Dernière modification par Watael (Le 01/06/2022, à 11:58)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne