Questa è una vecchia versione del documento!
Esercitazione 5
Comandi unix e script bash.
Cercare di completare tutti gli esercizi durante le ore di laboratorio e nel caso come homework.
Esercizio 1
Scrivere uno script bash che legga dallo standard input e scrive il testo ricevuto sia sullo standard output che sul file passato come argomento allo script.
Esercizio 2
Scrivere uno script bash che esegue un ciclo infito e che intercetta i segnali SIGUSR1 e SIGUSR2 ad ogni decimo di secondo. Quando viene ricevuto il segnale SIGUSR1 lo script stampa sullo standard output la stringa contenente un timestamp (usando ad esempio il comando date +“%T”
) e la stringa “ricevuto segnale SIGUSR1”, invece, quando riceve il segnale SIGUSR2 stampa sullo standard error, oltre al timestamp, la stringa “ricevuto segnale SIGUSR2”.
Lanciare lo script in background redirigendo lo standard output sul file “out.txt” e lo standard error sul file “err.txt”.
Testare lo script lanciando i 2 segnali SIGUSR1 e SIGUSR2 per 10 volte a distanza di 1 secondo e quindi terminare il processo in background.
NOTA: il pid dell'ultimo processo lanciato in background è dato dalla variabile di shell $!
.
Esercizio 3
Scrivere uno script bash che preso come argomento un nome di file (il file può avere solo estensione “.c”o “.h”)
verifica se il file ha include C “locali” (cioè della forma #include “name.h”
) e/o include C “globali”
(cioe' della forma #include <name.h>
).
Esercizio 4
Realizzare uno script che prende 3 argomenti in input (tutti e 3 nomi di directory): dir1 dir2 dir3. Lo script copia nella directory dir3 ogni file in dir1 che non e' presente in dir2 e/o che differisce da un file che ha lo stesso nome.
Esercizio 5
Scrivere uno script bash che dato un file testuale come argomento contenente numeri (un numero per riga) restituisce in output: il numero di elementi, il massimo, il minimo ed il valore medio. Esempio di output:
$> ./media.sh numeri.txt Elementi:12 Min :-2 Max :10 Media :4.33
Esercizio 6
Considerare nuovamente l'esercizio 5. Scrivere uno script che calcola la varianza dei numeri contenuti nel file passato come argomento. Esempio di output:
$> ./varianza.sh numeri.txt Varianza:12.831