====== Esercitazione 6 ======
===== Esercizio 1 =====
Completare le parti mancanti (sia codice che commento) del seguente script bash:
.... # shell da usare per l’interpretazione dello script
if [ $# -ne 1 ]; then # (commenta il codice) ........
echo usa: $(basename $0) nomedirectory # .........
exit -1
fi
dir=$1
if [ ! -d $dir ]; then # (commenta il codice) .........
echo "L'argomento $dir non e' una directory"
exit 1;
fi
bdir=$(basename $dir)
if [ -w ....... ]; then # il file esiste ed e scrivibile
echo "il file $bdir.tar.gz esiste gia sovrascriverlo (S/N)?"
read yn # (commenta il codice) .........
if [ "$yn" != "S" ]; then # ..............
exit 0;
fi
rm -f $bdir.tar.gz
fi
echo "creo l'archivio con nome $bdir.tar.gz"
tar cf $bdir.tar $dir ............... # appende l’output dello std-error nel file error.txt
if [ ...... ]; then # controllo che il comando sia andato a buon fine
echo "Errore nella creazione dell'archivio"
exit 1
fi
gzip $bdir.tar .......... # appende l’output dello std-error nel file error.txt
if [ ...... ]; then # controllo che il comando sia andato a buon fine
echo
echo "Errore nella compressione dell'archivio"
exit 1
fi
echo "archivio creato con successo, il contenuto dell’archivio e':"
tar tzvf $bdir.tar.gz ......... # redirige lo std-error sullo std-output
exit 0
===== Esercizio 2 =====
Scrivere uno script bash che prende "k>=2" nomi di file di ingresso e appende i primi "k-1" files nel file passato come ultimo argomento (k-esimo), scrivendo i file in ingresso nell'ordine da destra a sinistra (es. myscript.sh fileA fileB fileC -- fileC conterra' in sequenza prima fileB e poi fileA).
===== Esercizio 3 =====
Scrivere uno script bash che dati 2 file di testo in input (f1 ed f2) produce il seguente menu di scelta per l'utente:\\
1. rimuovere i file "f1" ed "f2"\\
2. archiviare i file "f1" ed "f2"\\
3. appendere il file "f1" al file "f2"\\
4. esci\\
Implementare le 3 opzioni e testare tutti i casi. Per l'opzione 1 chiedere conferma prima della rimozione dei file; per l'opzione 2 utilizzare i comandi ''tar'' e ''gzip'' in pipeline e produrre l'archivio compresso "f1f2.tar.gz". **Non** utilizzare il builtin ''select'' per implementare il menu.
===== Esercizio 4 =====
Scrivere uno script bash che preso in input un nome di file testuale che contiene solo linee con il seguente formato:
1490127894 - 21 0 23 0 20 2 32 15 1 0 0 0 0 0 4 3084940 13570834 4 6
1490127936 - 7054 1 191 1 905 6 7167 125 12 0 0 0 0 0 5 7239070 16676254 12 1035
1490127944 - 8261 2 218 3 1086 8 8394 148 15 0 0 0 0 0 3 8287914 18773540 15 1036
...
restituisce il valore massimo degli elementi nella colonna 17 e calcola la media degli elementi della stessa colonna.