Appliquer la notion
On souhaite améliorer le script suivant. Ce script prends en paramètre un nom de dossier, réalise la copie un par un des fichiers du dossier tout en affichant un message "Copie de CHEMIN_DU_FICHIER" à chaque étape.
if [ -z $1 ]
then
dossier="photos"
else
dossier=$1
fi
for fichier in $(ls camera/*.png)
do
echo "Copie de $fichier"
cp $fichier $dossier/
done
count=$(ls $dossier | wc -l)
echo "Il y a $count photos dans le dossier"
On souhaite maintenant que ce script utilise une fonction copie_fichier
qui s'occupe de faire le traitement de la copie du fichier pour chaque fichier. Cette fonction doit fonctionner peut importe le fichier source et le dossier destination.
Question
Adaptez le script en conséquence.
Solution
On va définir une fonction copie_fichier
qui prend en paramètre le fichier source etle dossier destination. Cette fonction va afficher le message puis réaliser le copie.
function copie_fichier {
if [ -z $1 ] || [ -z $2 ]
then
echo "Des paramètres sont vides"
fi
echo "Copie de $1"
cp $1 $2/
}
if [ -z $1 ]
then
dossier="photos"
else
dossier=$1
fi
for fichier in $(ls camera/*.png)
do
copie_fichier $fichier $dossier
done
count=$(ls $dossier | wc -l)
echo "Il y a $count photos dans le dossier"
Nous veillons bien à ce que l'utilisateur ait correctement passé les paramètres à la fonction.