Le
shopt -s nullglob indique à bash de renvoyer une chaine de caractères vide lors des développements de chemins lorsqu'aucun fichier ne correspond, car sinon il renvoie la chaine donnée en entrée :
$ echo nom-de-fichier-bidon*
nom-de-fichier-bidon*
$ shopt -s nullglob
$ echo nom-de-fichier-bidon*
$
C'est ce qui permet de tester ensuite facilement la présence de fichiers correspondant au motif à supprimer (indépendamment de la forme particulière de ce motif), pour ne pas que
rm ait à le faire alors que ce n'est pas son travail :
a_supprimer=("$cheminff/OfflineCache/"* "$cheminff/startupCache/"*)
Si aucun fichier ne correspond à ces deux motifs, le tableau
a_supprimer sera vide,
${#a_supprimer[@]} vaudra 0, et donc
((${#a_supprimer[@]})) sera faux.
cristobal78 a écritChangement de répertoire : tu veux dire qu'il ne faut pas que je commence la section script proprement dite par cd $HOME ? C'est ça ?
Pas seulement : toutes les commandes
cd que tu utilises peuvent être supprimées, en fournissant aux commandes exécutées dans un répertoire particulier un chemin absolu au lieu d'un chemin relatif.
C'est ce que j'ai fait dans l'exemple ci-dessus, en supprimant le
cd $cheminff (qui devrait d'ailleurs s'écrire
cd "$cheminff").
Cela dit, je me rends compte que j'avais oublié un bout de ton code dans cet exemple* : voici un exemple complet de remplacement pour le premier point
# 1.1 firefox :
echo "Nettoyage du cache FFox"
shopt -s nullglob
if test_paq0 firefox; then
echo "Firefox est installé"
a_supprimer=("$cheminff/OfflineCache/"* "$cheminff/startupCache/"*)
if ((${#a_supprimer[@]})); then
rm -r "${a_supprimer[@]}"
else
echo "Rien à supprimer"
fi
else
echo "Firefox non installé"
fi
--
* cet oubli m'avait fait faire une petite erreur de test que j'ai corrigée dans mon précédent post.