Appliquer la notion

On souhaite améliorer le script suivant.

1
#!/bin/bash
2
3
cp camera/*.png $1/
4
count=$(ls $1 | wc -l)
5
echo "Il y a $count photos dans le dossier"

Ce script copie tout les fichiers .png se trouvant dans le dossier camera vers un dossier de destination, puis compte le nombre de fichiers dans le dossier de destination pour l'afficher. Le dossier de destination est déterminé pour le premier argument envoyé au script.

1
$ ./script.sh photos

On souhaite que le script prenne désormais en premier paramètre le dossier de départ et en second paramètre le dossier de destination. Si l'un des deux paramètres n'est pas bon, il doit écrire un message d'erreur.

Question

À l'aide de conditions et d'opérateurs logiques, écrire le script amélioré.

Solution

1
if [ -z $1 ] || [ -z $2 ]
2
then
3
  echo "Merci d'indiquer un dossier de départ et un dossier de destination"
4
  echo "./script.sh camera photos"
5
else
6
  cp $1/*.png $2/
7
  count=$(ls $2 | wc -l)
8
  echo "Il y a $count photos dans le dossier"
9
fi

On utilise un opérateur || qui est validé si l'une ou l'autre des variables $1 et $2 (les paramètres) est vide (donc manquante).

Kyâne Pichou Paternité - Partage des Conditions Initiales à l'Identique