Sei sulla pagina 1di 5

Script della shell Utilizzando i comandi del linguaggio di shell si possono realizzare dei veri e propri programmi.

Bisogna scrivere i comandi in un file e poi richiederne alla shell lesecuzione. I file di comandi cos creati vengono chiamati procedure o script della shell (shell script). Uno shell script un file di testo a cui vengono assegnati i permessi di esecuzione (chmod u+x nomefile). Per eseguire il file si deve scrivere: sh nomefile bash nomefile ./nomefile I commenti I commenti iniziano con # Il comando echo Il comando echo permette di visualizzare dei messaggi. Uso delle variabili Si pu assegnare il valore ad una variabile nel seguente modo: VARIABILE=valore Per fare riferimento al nome di una variabile si fa precedere al nome della variabile il simbolo di $. Es. echo $VARIABILE Parametri Si possono utilizzare degli argomenti o parametri posizionali nella riga di comando. Tali parametri sono identificati come $n (dove n indica il numero dellargomento, per esempio $2 indica il secondo parametro). $0 contiene il nome dello script. $# contiene il numero di parametri passati nella riga di comando. Lo script Echo $1 Visualizza a schermo il primo parametro passato. read Si pu assegnare un valore alle variabili anche leggendo un input dellutente col comando read. Es. echo Inserisci il tuo nome read A echo Il tuo nome $A Es. echo Inserire il lato del quadrato read A AREA=$(($A * $A)) echo area= $AREA Istruzione if Sintassi: if condizione then elenco comandi fi

oppure: if condizione then elenco comandi else elenco comandi fi Espressioni con i numeri interi: v1 eq v2 restituisce vero se i valori sono uguali; v1 ne v2 restituisce vero se i valori sono diversi; v1 gt v2 restituisce vero se il primo valore maggiore del secondo; v1 ge v2 restituisce vero se il primo valore maggiore o uguale del secondo; v1 lt v2 restituisce vero se il primo valore minore del secondo; v1 le v2 restituisce vero se il primo valore minore o uguale del secondo; Es. echo Inserire il primo numero read A echo Inserire il secondo numero read B if [ $A eq $B ] then echo I due numeri sono uguali else echo I due numeri sono diversi fi Espressioni con le stringhe: -z stringa restituisce vero se la stringa ha lunghezza uguale a zero; -n stringa restituisce vero se la stringa ha lunghezza diversa da zero; stringa1 = stringa2 restituisce vero se le stringhe sono uguali (bisogna lasciare uno spazio prima e dopo il segno di uguale). Parametri posizionali e costanti vanno tra virgolette. Stringa1 != stringa2 restituisce vero se le stringhe sono diverse. Es. verifica se una stringa ha lunghezza zero echo inserire una stringa read S if [ -z $S ] then echo la stringa ha lunghezza zero else echo la stringa non ha lunghezza zero fi Es. confronto fra due stringhe echo inserire la prima stringa read S1 echo inserire la seconda stringa read S2 if [ $S1 = $S2 ]

then echo le stringhe sono uguali else echo le stringhe sono diverse fi Espressioni con operatori di test sui file -d -e -f -s -r -w -x file file file file file file file restituisce vero se il file esiste ed una directory; restituisce vero se il file esiste; restituisce vero se il file esiste ed un file normale; restituisce vero se il file esiste ed non vuoto; restituisce vero se si ha lautorizzazione in lettura di un file; restituisce vero se si ha lautorizzazione in scrittura di un file; restituisce vero se si ha lautorizzazione in esecuzione sul file;

Operatori logici ! not -a and -o or Es. dato il nome di un file dire se presente oppure no. echo inserire il nome di un file read F if [ -e $F ] then echo file esistente else echo file inesistente fi ciclo for Sintassi: for variabile in elenco-valori do elenco comandi done Es. visualizzare i primi 5 numeri naturali v=1 2 3 4 5 for i in $v do echo $i done while e until Sintassi: while condizione do elenco comandi done until condizione

do elenco comandi done Es. somma dei primi n numeri echo inserire n read n SOMMA=0 CONT=1 while [ $CONT le $n ] do SOMMA=$(($SOMMA+$CONT)) CONT=$(($CONT+1)) done echo $SOMMA Es. Script per la copia di un file che controlli che siano inseriti due argomenti e che il file di origine esista e quello di destinazione non esista. if [ $# != 2 ] then echo Il comando copia richiede due parametri echo copia nome-file-da-copiare nome-nuovo-file else if [ ! -e $1 ] then echo $1 non esiste else if [ -e $2 ] then echo $2 esiste gi else cp $1 $2 echo file copiato fi fi fi Es. verifica se un dato in input una cartella e in questo caso visualizza il contenuto con le propriet. echo inserire il nome della cartella echo n if [ -d $nome ] then ls l $nome else echo errore, il nome inserito non quello di una directory fi Es. somma dei primi n numeri pari echo inserire n read n SOMMA=0 CONT=1 nump=2

while [ $CONT le $n ] do SOMMA=$(($SOMMA+$nump)) CONT=$(($CONT+1)) nump=$(($nump+1)) done echo $SOMMA

Potrebbero piacerti anche