PROGRAMMAZIONE BASH – ISTRUZIONE IF

Slides:



Advertisements
Presentazioni simili
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Advertisements

Shell Scripting. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure contenuti.
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
Le strutture di controllo
La shell di Linux Linux ha una varietà di shell differenti:
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME … Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Script di shell (bash).
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Automatizzar e con Perl e Bash LinuxDay 2007 Torino Cascina Roccafranca Francesco Golia e Igor Pesando.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
Amministrazione di reti di calcolatori - Massimo Bertozzi Shell e scripting.
Ambienti di Programmazione per il Software di Base
© 2007 SEI-Società Editrice Internazionale, Apogeo
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
I/O redirection AND PIPES
I PROCESSI.
Cosa succede quando premi invio
PROGRAMMAZIONE SHELL -
Terza Lezione → Navigare nel file System → parte 2
Tutorato Elementi di Informatica 2013
7. Strutture di controllo Ing. Simona Colucci
Condizioni decisionali
Script Marco D. Santambrogio –
PROGRAMMAZIONE BASH - INTRODUZIONE
I comandi.
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
Strutture di controllo
I FILES AD ACCESSO SEQUENZIALE
Informatica per Scienze Geologiche LT a.a
2018/9/ /9/11 USER ENVIRONMENT 1 1.
Operazioni pianificate
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
Informatica per Scienze Geologiche LT a.a
Programmare.
Linguaggio C++ Selezione.
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
Strutture di Controllo
Programmazione e Laboratorio di Programmazione
Scrivere programmi corretti
Vari e semplici programmi.
Programmazione e Laboratorio di Programmazione
Ricorsione 16/01/2019 package.
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Astrazione e Concretizzazione
La struttura dei primi programma in C
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Condizioni decisionali
Processi decisionali e funzioni di controllo
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Condizioni decisionali
Programmazione e Laboratorio di Programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione e Laboratorio di Programmazione
Ricerca 01/08/2019 package.
La programmazione strutturata
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

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

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

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

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

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

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

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

2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 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

[[]] (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

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

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

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

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

2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 2018/9/11 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