150 likes | 294 Views
Il sistema operativo UNIX Shell: uso avanzato e script. Niccol ò Battezzati <niccolo.battezzati@polito.it> Politecnico di Torino Dip. Automatica e Informatica. 1. Sistemi Operativi - Introduzione. Indice. Variabili Funzioni Read Segnali. 2. Sistemi Operativi - Introduzione. Indice.
E N D
Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati<niccolo.battezzati@polito.it> Politecnico di Torino Dip. Automatica e Informatica 1 Sistemi Operativi - Introduzione
Indice • Variabili • Funzioni • Read • Segnali 2 Sistemi Operativi - Introduzione
Indice • Variabili • Funzioni • Read • Segnali 3 Sistemi Operativi - Introduzione
Variabili • Variabili predefinite: • $0 nome script • $1,$2,... parametri • $# numero parametri • $* stringa con tutti i parametri • $? valore di ritorno dell’ultmo programma • $$ PID del processo • $?var ‘1’ se var e` stata definita • $#var il numero di elementi nell’array var 4 Sistemi Operativi - Introduzione
Variabili - array • Sono gestite variabili vettoriali unidimensionali: • Esempi: • var=(1 2 5 ”ciao”) • echo ${var[0]} • echo ${var[1-3]} • Utili nelle funzioni: • BASH_ARGV[] e BASH_ARGC 5 Sistemi Operativi - Introduzione
Indice • Variabili • Funzioni • Read • Segnali 6 Sistemi Operativi - Introduzione
Funzioni • Si possono definire delle funzioni, prima che vengano chiamate, con la seguente sintassi: • [function] name () {commands} • Il valore di ritorno e` definito: • o dal valore dell’ultimo comando eseguito • o dal comando return • I parametri sono definiti con la notazione posizionale: • $1, $2, $3 ... • Le funzioni vengono chiamate con la seguente sintassi: • name param1 param2 ... 7 Sistemi Operativi - Introduzione
Funzioni - esempio function printUsage { echo “Wrong number of parameters ($1)” echo “Usage: ${BASH_ARGV[0]} param1 param2” exit 0 } ... if test $# -ne 2 then printUsage $# fi 8 Sistemi Operativi - Introduzione
Indice • Variabili • Funzioni • Read • Segnali 9 Sistemi Operativi - Introduzione
Read • read permette di leggere una riga da stdin, con la seguente sintassi: • read var1 var2 ... varN • ogni parola (separata da spazi) viene messa in una variabile • l’ultima variabile contiene tutte le rimanenti parole • permette di fare input interattivo. 10 Sistemi Operativi - Introduzione
read - esempi • (per scambiare due colonne in un file): • while read var1 var2 • do • echo $var2 $var1; • done <file_in >file_out • (input interattivo): • echo –n “Insert a sentence: ” • read w1 w2 others • echo “Word 1 is: $w1” • echo “Word 2 is: $w2” • echo “The rest of the line is: $others” 11 Sistemi Operativi - Introduzione
Indice • Variabili • Funzioni • Read • Segnali 12 Sistemi Operativi - Introduzione
Segnali • I processi possono ricevere dei segnali, o dall’utente o da altri processi. Il processo puo` quindi decidere di: • ignorare il segnale • eseguire il comportamento di default • gestire il segnale • Per mandare un segnale si usa il comando • kill –signal pid • dove signal puo` essere un numero o un nome (come KILL o USR1 ecc.). 13 Sistemi Operativi - Introduzione
Segnali • Per specificareilcomportamentodaadottaresiusailcomando: trap [‘commands’] [signal...] • trap ‘commands’ signals... eseguecommandsallaricezionedisignals • trap ‘’ signals... ignoratuttiisegnalisignals • trap signals... ripristinailcomportamentodi default per isegnalisignals. 14 Sistemi Operativi - Introduzione
Segnali - esempi • (per gestire il segnale SIGALRM): • trap ‘echo mi sono svegliato’ ALRM • (per ripristinare il valore di default): • trap ALRM • (per ignorare SIGUSR1 e SIGUSR2): • trap ‘’ USR1 USR2 15 Sistemi Operativi - Introduzione