Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio20:esercitazionib:esercitazione6

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 -n "il file $bdir.tar.gz esiste gia', sovrascriverlo (S/N)?"
    read yn                                 # (commenta il codice) .........
    if [ x$yn != x"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 sullo std-error nel file error.txt   
if [ ...... ]; then                         # controlla che il comando sia andato a buon fine
    echo "Errore nella creazione dell'archivio"
    exit 1
fi
gzip $bdir.tar  ..........                  # appende l’output sullo std-error nel file error.txt
if [ ...... ]; then                         # controlla 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).
SUGGERIMENTO: creare un array contenente tutti gli argomenti passati allo script.

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

Dati i file testuali contenuti in questo tarball, ognuno dei quali contiene per ogni riga due campi separati da spazio ('id valore'). Scrivere uno script bash che legge il campo 'valore' di ogni file e ne calcola media e deviazione standard, quindi stampa sullo standard output una stringa con il seguente formato:
[nomedelfile senza estensione] [numero di linee del file] [media] [deviazione standard]. Un esempio di output per i due file test1.dat e test2.dat è:
test1 5 20.18 1.25
test2 3 11.20 .81
NOTA: per effettuare i calcoli in floating point usare il comando bc (esempio: echo “scale=2; sqrt(12)” | bc -q“ stampa 3.46, cioe' la radice quadrata di 12 con troncamento a 2 cifre dopo la virgola).

informatica/sol/laboratorio20/esercitazionib/esercitazione6.txt · Ultima modifica: 24/03/2020 alle 09:06 (4 anni fa) da Massimo Torquati