La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”

Presentazioni simili


Presentazione sul tema: "Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”"— Transcript della presentazione:

1 Script bash I file di comandi in Linux

2 BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”  Bash versione 2.03

3 File di comandi  sono file ASCII  iniziano con: #!/bin/bash  deve essere attribuito il permesso di esecuzione (chmod a+x )  per eseguire:./

4 Un primo esempio #!/bin/bash #Questa è una riga di commento #questo file di comandi visualizza #una frase echo Buon giorno a tutti

5 Metacaratteri  E’ possibile utilizzare metacaratteri  Es. #!/bin/bash #copia tutti i file doc e i file di due lettere che #iniziano con la lettera a nella directory #backup cp *.doc backup cp a?.txt backup

6 Operatori set $ls z[aeiou]* –visualizza tutti i file che iniziano con z e la cui seconda lettera è una vocale $ls z[!aeiou]* –visualizza tutti i file che iniziano con z e la cui seconda lettera è una vocale

7 Parentesi graffe  l’istruzione $echo c{ar,at,an,on}s visualizza cars cats cans cons

8 Caratteri speciali < ridirezione input > ridirezione output | pipe & esegue in background ‘ apice forte “ apice debole $ variabile {} inizio e fine blocco di comandi

9 Variabili bash  variabili stringa: –assegnamento  =  Es. nomefile=testo.txt –per ottenere il valore  $ Es. echo $nomefile oppure  ${ } Es. echo ${nomefile}

10 Variabili bash  Oltre a quelle definite dall’utente ne esistono molte predefinite (Es. $IFS o $BASH_VERSION)  $ seguito da un numero indica i parametri della riga di comando (0 il nome del file script)  $# contiene il numero dei parametri  $* è una stringa contenente tutti i parametri

11 Parametri della riga di comando #!/bin/bash echo “hai inserito $# parametri” echo “e sono $*.” Se il file si chiama prova e viene lanciato con il comando:./prova alfa beta gamma si otterrà il risultato: $hai inserito 3 parametri $e sono alfa beta gamma.

12 Codice di uscita  Ogni programma Linux quando termina restituisce un codice di uscita che normalmente è 0 se non ci sono stati errori  Viene memorizzato nella variabile $?  Anche gli script bash possono restituire un codice con: exit Es. exit 0

13 Liste di comandi condizionate  Per legare l’esecuzione di due comandi è possibile usare i due operatori: && - il secondo comando viene eseguito se e solo se il primo ha codice di uscita 0 || - il secondo comando viene eseguito se e solo se il primo ha codice di uscita diverso da 0

14 Esempio Liste  Le seguenti istruzioni cambiano la directory corrente, se questa operazione ha successo vi copiano un file: cd /home/gabri/Linux && cp file file.bak  Cambia la cartella corrente, scrive un messaggio di errore se la cartella non esiste cd /home/gabri || echo “Non c’e la cartella”

15 Lettura di variabili  Si usa il comando read  Es: #!/bin/bash echo “Inserisci x” read x echo “inserisci y” read y echo “x ha valore $x” echo “y ha valore $y”

16 Alternative if listacomandi1 then listacomandi2 [else listacomandi3] fi  la listacomandi2 viene eseguita se l’ultimo codice di ritorno di listacomandi1 è 0, altrimenti viene eseguita la listacomandi3

17 Esempio if #!/bin/bash if ls $1 then echo “Il file $1 esiste” if grep $2 $1 then echo “… e contiene la parola $2” else echo “… ma non contiene la parola $2” fi else echo “il file $1 non esiste!” fi Questo scrip controlla se esiste il file passato come primo argomento e se esiste guarda se contiene la stringa passata come secondo argomento, visualizza messaggi di errore altrimenti

18 Formato if generale if listacomandi then listacomandi [elif listacomandi then listacomandi] [else listacomandi3] fi

19 Condizione generica  Per usare un if con una generica condizione: if [ $1 = 1 ] then echo “hai inserito 1” fi  Attenzione ai blank!!!  -o fa l’or, -a fa l’and

20 Confronti fra interi oper.è vero se -eqi due numeri sono uguali -nei due numeri sono diversi -gtil primo è maggiore del -ltil primo è minore -geil primo è maggiore o uguale -ltil primo è minore o uguale

21 Test sui file oper.e’ vero se… -d filefile esiste ed è una directory -e filefile esiste -f filefile esiste ed è normale -r filesi può scrivere su file -s filefile esiste e non è vuoto -w filesi può scrivere su file -x filefile è eseguibile

22 Esempio #!/bin/bash USO=“Uso: copia file 1 file2” if [ $# -ne 2 ] ; then #verifica il nr. di argomenti echo “numero di argomenti non valido” echo $USO exit 1 fi if [ ! –e $1 ] ; then echo “$1 non esiste!” exit 2 fi if [ -e $2 –a ! –d $2 ] ; then echo “$2 esiste e non è una directory” exit 4 fi cp $1 $2 copia un file, se esiste, controllando di non sovrascriverne un’altro

23 Cicli: for for variabilefor in listadiparole do listacomandi done  il ciclo viene eseguito mentre variabilefor assume i valori contenuti in listadiparole

24 Cicli: for #!/bin/bash IFS=: for dir in $PATH do echo $dir if [ -w $dir ]; then echo “puoi scrivere in $dir” else echo “ non puoi scrivere in $dir” fi done

25 Cicli: while while listacomandi1 do listacomandi2 done  il ciclo viene eseguito mentre listacomandi1 restituisce codice 0

26 Cicli: while #!/bin/bash declare –i idx idx = 1 while [ $idx –ne 150 ] do cp filetesto filetesto.$idx idx=$idx+1 done

27 Cicli: until until listacomandi1 do listacomandi2 done  il ciclo viene eseguito mentre listacomandi1 restituisce codice diverso da 0


Scaricare ppt "Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”"

Presentazioni simili


Annunci Google