190 likes | 311 Views
Programmazione Shell. Bash Shell Bourne again shell. Iniziamo!!!. echo '**** Calendario Anno *****' cal 2008 Dopo aver scritto un file di nome calendario Nel terminale scrivere bash calendario. Interprete?.
E N D
Programmazione Shell • Bash Shell • Bourne again shell
Iniziamo!!! • echo '**** Calendario Anno *****' • cal 2008 • Dopo aver scritto un file di nome calendario • Nel terminale scrivere bash calendario
Interprete? • La bash shell è un interprete di linguaggio di comandi si trova nella directory /bin • Aggiungi sempre agli script #!/bin/bash • Specifica appunto l'interprete dei comandi che vogliamo utilizzare!
Rendiamolo eseguibile • chmod +x calendario • Per eseguirlo ./calendario
Calendario di un dato anno • echo '**** Calendario Anno *****' • cal $1 • Quando invochiamo il calendario aggiungiamo come parametro l'anno desiderato • Es: ./calendario 2009
Debug • Per utilizzare un debugger per gli script : • bash – v nome_script
Variabili Shell • a=3 assegnazione • citta=roma • nome='Carlo Contardi' • declare media
echo $a • Stampa il valore di a • unset a • echo $a • Non produce alcun valore in output!!!
Array • a=(1 2 18 13 15) • a[1]=7 • Si può modificare la dimensione aggiungendo elementi a[5]=67 • Per visualizzare il valore di una componente: • echo ${a[2]}
Per visualizzare tutte le componenti: • Echo ${a[*]}
Output dati e messaggi • echo 'che bella gionata' • echo ”area figura = $a” • echo ”il libro \” Notturno Indiano \” costa $prezzo euro” • \t tabulazione normale • \n linefeed • \r carriage return
Operatori aritmetici • Per memorizzare il risultato di un operazione di calcolo let : • let b=a+1 • Gli operatori aritmetici sono gli stessi dei linguaggi C o Java: • + , - , * , / , % , += , -= , /= , *= , %=
Operatori di confronto • -eq op1=op2 • -ne op1!=op2 • -lt op1<op2 • -le op1<=op2 • -gt op1>op2 • -ge op1>=op2
Stutture di selezione • if [ condizione ] • then • comando • fi
Esempio! • #!/bin/bash • #scelte • if [ "$1" = 'lista' ] • then • ls -l • fi • if [ "$1" = 'data' ] • then • date • fi
Salvalo come scelte • Cambia i permessi con chmod • Eseguilo specificando l'argomento
Rinominare un file #!/bin/bash #cambio nome if [ $# -ne 2 ] then echo ' troppo pochi parametri!!!' elif [ -e $2 ] # per controllare l'esistenza di un file then echo ' il secondo file esiste già' elif [ -e $1 ] then mv $1 $2 else echo ' il primo file non esiste' fi
Traduciamo? • Creiamo un file di testo di nome dizion contenente per ogni riga un termine italiano e la sua traduzione in inglese, separati dal carattere di tabulazione
Ecco il programma #!/bin/bash if [ $# -ne 1 ] then echo "inserisci <comando> <termine>" else traduzione=`grep $1 dizion | cut -f2` # NOTA BENE!!! non è un apice normale ma AltGr + apice normale # NOTA BENE 2!!!! per questa assegnazione non devono essere presenti spazi tra gli operatori! if [ -z $traduzione ] then echo ' Il termine non è presente nel dizionario' else echo " La traduzione di $1 = $traduzione " fi fi