Il sistema operativo UNIX
Shell: uso avanzato e script
Niccolò Battezzati
<[email protected]>
Politecnico di Torino
Dip. Automatica e Informatica
Sistemi Operativi - Introduzione
1
Indice
• Variabili
• Funzioni
• Read
• Segnali
Sistemi Operativi - Introduzione
2
Indice
• Variabili
• Funzioni
• Read
• Segnali
Sistemi Operativi - Introduzione
3
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
Sistemi Operativi - Introduzione
4
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
Sistemi Operativi - Introduzione
5
Indice
• Variabili
• Funzioni
• Read
• Segnali
Sistemi Operativi - Introduzione
6
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 ...
Sistemi Operativi - Introduzione
7
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
Sistemi Operativi - Introduzione
8
Indice
• Variabili
• Funzioni
• Read
• Segnali
Sistemi Operativi - Introduzione
9
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.
Sistemi Operativi - Introduzione
10
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”
Sistemi Operativi - Introduzione
11
Indice
• Variabili
• Funzioni
• Read
• Segnali
Sistemi Operativi - Introduzione
12
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.).
Sistemi Operativi - Introduzione
13
Segnali
• Per specificare il comportamento da adottare si usa il
comando:
trap [‘commands’] [signal...]
1. trap ‘commands’ signals...
esegue commands alla ricezione di signals
2. trap ‘’ signals...
ignora tutti i segnali signals
3. trap signals...
ripristina il comportamento di default per i segnali signals.
Sistemi Operativi - Introduzione
14
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
Sistemi Operativi - Introduzione
15
Scarica

so_1011_lab4 - Politecnico di Torino