La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

PROGRAMMAZIONE BASH – ISTRUZIONE IF

Presentazioni simili


Presentazione sul tema: "PROGRAMMAZIONE BASH – ISTRUZIONE IF"— Transcript della presentazione:

1 PROGRAMMAZIONE BASH – ISTRUZIONE IF
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 PROGRAMMAZIONE BASH – ISTRUZIONE IF 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

2 Utilizzare if X=10 if[$X -eq 10];then echo “x è uguale a 10” else
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Utilizzare if X=10 if[$X -eq 10];then echo “x è uguale a 10” else echo “x non è uguale a 10” fi if_first.sh 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

3 If più complessi if commands; then commands [elif commands; then
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 If più complessi if commands; then commands [elif commands; then commands...] [else commands] fi 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3

4 Exit status 0 se il programma è stato eseguito con successo
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Exit status 0 se il programma è stato eseguito con successo Diverso da zero negli altri casi Echo $? (possiamo vedere l'exit code di un programma) Ogni programma se restituisce degli errori ha la propria codifica (v. man page del programma) 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

5 Test expression Espressioni sui file
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Test expression Espressioni sui file file1 -nt file2 file1 è più recente file2. file1 -ot file2 file1 è meno recente file2. -d file file esiste ed è una directory -e file il file esiste -f file il file esiste ed è un file regolare -r file il file esiste ed è leggibile -w file il file esiste ed scrivibile -x file file esiste ed è eseguibile 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5

6 Dentro una shell function
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Dentro una shell function test_file () { # test-file: Evaluate the status of a file FILE=~/.bashrc if [ -d "$FILE" ]; then echo "$FILE is a directory." fi if [ -r "$FILE" ]; then echo "$FILE is readable." if [ -w "$FILE" ]; then echo "$FILE is writable." else echo "$FILE does not exist" Return 1 } 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6

7 String expression Expression
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 String expression Expression -n string la lunghezza della stringa è diversa da zero -z string la lunghezza della stringa è zero string1 = string2 string1 == string2 stringa1 e stringa2 sono uguali string1 != string2 stringa1 e stringa2 non sono uguali string1 > string2 string1 ordina dopo stringa1 string1 < string2 string1 ordina dopo stringa2 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7

8 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Integer expression - integer1 -ne integer2 integer1 non è uguale a integer2 integer1 -le integer2 integer1 è minore o uguale a integer2 integer1 -lt integer2 integer1 è minore di integer2 integer1 -ge integer2 integer1 è maggiore o ugualedi integer2 integer1 -gt integer2 integer1 è maggiore a integer2 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8

9 [[]] (solo per bash shell)
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 [[]] (solo per bash shell) FILE ciao=ciao.txt #if_second.sh if [[ $FILE == *.txt ]]; then echo "il file è di testo." else echo "non è un file di testo. Estensione del file non corretta" >&2 exit 1 fi 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9

10 Altro da bash (()) if ((INT < 0)); then echo "INT is negative."
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Altro da bash (()) if ((INT < 0)); then echo "INT is negative." else echo "INT is positive." fi 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

11 Espressioni composte Operation test [[ ]] and (( )) AND -a && OR -o ||
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Espressioni composte Operation test [[ ]] and (( )) AND -a && OR -o || NOT ! ! if [[ INT -ge MIN_VAL && INT -le MAX_VAL ]]; then echo "$INT is within $MIN_VAL to $MAX_VAL." else echo "$INT is out of range." fi 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11

12 Combinare i comandi command1 && command2 and command1 || command2
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Combinare i comandi command1 && command2 and command1 || command2 Nel primo caso il comando2 viene eseguito se va a buon file il comando1 Nel secondo caso il comando2 viene eseguito se non va a buon fine il comando 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12

13 Il progetto EXALL – prima parte
2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Il progetto EXALL – prima parte Creiamo una piccola applicazione che prende in input un tipo e un comando ed esegue una certa operazione a seconda dell'input dell'utente. Deve essere creato un file che contiene tutti i programmi eseguiti a seconda del programma aperti.txt. Indicare anche la data e l'ora dell'operazione (usare l'istruzione date) es. aperto file, aperto firefox, rimosso file Il programma deve utilizzare funzioni, le istruzioni echo, if e le istruzioni composte and e or e i comandi dedicata ai processi. Un comando può essere libero (l) e in questo caso viene semplicemente eseguito. Nel caso in cui venga specificato p deve aperto il programma in background. Nel caso in cui si specificato fr, viene visualizzato il file, nel caso in cui si specifica fx viene eseguito. 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13

14 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 Controlli sull'input Alcuni controlli che devono essere effettuati sul file Se si specifica fr e il file non è di testo, il programma viene terminato. Se si specifica fr e il file è di testo, viene verificato la correttezza dei permessi di lettura sul file. Se i permessi ci sono viene aperto, altrimenti viene terminato il programmo. Nel caso in cui fx il file deve essere .sh, altrimenti viene dato errore. Anche qui devono essere verificati i permessi di esecuzione Verrà migliorato gradualmente via via che impareremo nuovi concetti Migliore gestione degli errori Input dell'utente da riga di comando e non tramite variabili Comandi multipli 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14


Scaricare ppt "PROGRAMMAZIONE BASH – ISTRUZIONE IF"

Presentazioni simili


Annunci Google