Exercice : 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 ]
thendossier="photos"
elsedossier=$1
fifor fichier in $(ls camera/*.png)
doecho "Copie de $fichier"
cp $fichier $dossier/
donecount=$(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 ]
thenecho "Des paramètres sont vides"
fiecho "Copie de $1"
cp $1 $2/
}
if [ -z $1 ]
thendossier="photos"
elsedossier=$1
fifor fichier in $(ls camera/*.png)
docopie_fichier $fichier $dossier
donecount=$(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.