#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 :
Vous remerciant par avance de l'attention que vous voudrez bien porter à mon message,
Bonne journée
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.
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,
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 )
Hors ligne
#6 Le 01/06/2022, à 11:55
- Watael
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.
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