Ciao, mi sono avvicinato da poco alla programmazione bash, e volevo proporre la mia soluzione ad un esercizio. Volevo qualche dritta da qualcuno un po' più esperto per semplificare e migliorare il mio codice. Il testo dell'esercizio è questo:

Creare uno script bash 'backup.sh' che effettui il backup giornaliero di una directory in un file .tar.gz. Tutti i backup andranno a finire in una cartella predefinita nello script ed ogni backup avrà un nome del tipo 'backupYYMMDD'.
La sintassi dovrebbe essere la seguente:
backup.sh [-d|--date YYMMDD] [directory to backup]

La mia soluzione è questa:
codice:
#!/bin/bash 

if [ $# -eq 3 ] || [ $1 = -h ] || [ $1 = --help ] ; then
  case "$1" in
    -h|--help)
      echo "Effettua il backup di una directory scelta dall'utente."
      echo "sintassi: `basename $0` [-d|--date YYMMDD] [directory to backup]"
      ;;
    -d|--date)
      if [ -d "$3" ]; then
	cp -R "$3" /home/peppe/Documenti/Script/backup
	cd /home/peppe/Documenti/Script/backup
	DIR= `basename $3`
	tar -czf "backup$2.tar.gz" `basename $DIR`
      else
	echo "$3 non e' una directory e/o non esiste."
      fi
      ;;
    *)
      echo "Errore."
      echo "sintassi: `basename $0` [-d|--date YYMMDD] [directory to backup]"
      ;;
  esac
else
  echo "Inserire la data di oggi e la cartella da backuppare."
  echo "sintassi: `basename $0` [-d|--date YYMMDD] [directory to backup]"
fi

exit 0