Manuali, links, fotografie e tanto altro
alla portata di un semplice click!
 
 Benvenuto Ospite
Manuali, immagini, fotografie e tanto altro a portata di un click

Cartoline virtuali

Cartolina n° 180



Sono presenti 1307 cartoline virtuali. Entra ora


Giochi online
Shuriken


Nessun punteggio alto presente
Gioca.

Visualizza tutti i giochi.

News Reader















Guida al Bash Scripting - Volume 3, Salvo B
.: Data Pubblicazione 03-Nov-2004 :: Letture:: 1096 :: Recensione :: Stampa solo questa pagina :: Stampa pagina con tutte le sottopagine:.
Sommario

+ Introduzione
+ Let's start
+ Selezioni
+ Funzioni
+ Programmino finale

- Introduzione
Ok, bash significa "bourne again shell", e' la shell ufficiale di GNU, uno
dei primi programmi che fu scritto quando comincio' a defilarsi l'idea di
fare un OS unix like "free".
Per chi ancora non lo sa, una shell e' un interfaccia di dialogo tra
l'utente e il kernel di un OS, quindi un pezzo fondamentale di un sistema
operativo che si rispetti (veramente Mac OS 7.2 pur non avendo una shell
testuale era alquanto "rispettoso" ;).
La potenza di questa shell (bash) sta nel fatto di avere un semplice (ma
estremamente efficace) linguaggio di programmazione "integrato".
Come per la vecchia shell di DOS, e' possibile creare file con all'interno
una sequenza di comandi, che bash esegue avendo un controllo del flusso
comandato da cicili iterativi (for, while, ecc.) e selezioni binarie o
multiple che siano (if, else, then e cazzi vari).

- Let's start
Nelle due precedenti lezioni, resinaro vi ha mostrato le due funzioni
veramente peculiari di bash (la prima l'aveva anche DOS ma era copiata ;),
vale a dire, la redirezione e il piping dell'input/output.
Non sono parolacce, sono semplicemente le cose dette in precedenza.
Le cose dette fino ad ora, sono facilmente applicabili anche dando i comandi
in sequenza e senza racchiuderli in uno script eseguibile (anche questi che 
vedremo ora, ma per questi e' piu' comodo fare lo script), ora invece passeremo 
ai comandi per il controllo del flusso del programma (spero che sappiate di che
parlo).

- Selezioni
No, non quelle di miss italia, le selezioni del flusso del programma, che a un 
certo punto, puo' essere in grado di eseguire certi comandi se una
condizione e' verificati o altri comandi se questa condizione non e'
verificata o ne e' verificata un'altra e cosi' via.
Ecco un esempio in linuga italiana:

+ |Controlla| quante magliette ci sono nel cassetto.
+ |Se| sono meno di 5, |Allora| Vai a prendere le magliette dalla lavanderia
+ |Se| sono piu' di 5, |Allora| Portane una in lavanderia perche' deve
essere perforza zozza!.
+ |Altrimenti| Di alla mamma che non sai che fare perche' sei un computer e
non sei stato programmato per riconoscere questo stato del programma :P

Questo esempio alquanto scemo dovrebbe essere una cosa abbastanza risaputa
se avete un minimo di conoscenza nella programmazione, ora vediamo come
funziona usando la sintassi di bash.
Vi ricordo che le righe che cominciano con il cancelletto sono dei commenti
e bash li saltera' quindi potete scriverci le cazzatine che vi pare, noi ci
scriveremo dei chiarimenti per capire meglio quello che fa il programma.

#!/bin/bash
echo "Quanti anni hai ?"              # stampiamo sullo schermo la nostra domanda.
read eta                              # leggiamo la risposta e lo
                                      # assegnamo alla variabile "eta".

if test $eta -lt 15; then             # verifica se la variabile eta' e' minore
                                      # (-lt sta per less than) di 15.                  
   echo "sei ancora un pischello!"    # se si verifica la condizione,
                                      # viene stampato questo testo sullo schermo

elif test eta -gt 15; then            # un altro if dentro il primo che verifica se 
                                      # $eta e' maggiore di 15.
   echo "stai cominciando a crescere" # come sopra.

else                                       # se nessuna dele due condizioni
                                           # si verifica, il programma
                                           # stampa sullo schermo il messaggio 
					   # alla prossima riga.
   echo "hai 15 anni esatti, bravo!"

fi                                         # il fi chiude l'if.

Questa, come vedete e' una semplice selezione... Il programma si trova a
verificare delle condizioni, se queste sono vere, esegue alcune istruzioni,
altrimenti ne esegue delle altre. Per definire le condizioni abbiamo usato
il comando "test" che permette di confrontare secondo vari criteri due
variabili, siano esse numeri interi, stringhe o addirittura file! per ogni
ulteriore informazione: man test.

p.s. al posto di scrivere test, possiamo racchiudere la nostra condizione
tra parentesi quadre, ad esempio:

if [ "$1" = "ciao" ]; then
   echo "hai scritto ciao"
fi

- Funzioni
Ogni linguaggio che si rispetti, ha un minimo di ordine nella gestione del
flusso del programma. Bash, come il C, ci da la possibilita' di racchiudere
alcune istruzioni, in una routine di comandi, che possiamo richiamare con
comodo quando ci pare senza dover riutilizzare sempre gli stessi comandi.
Prendiamo come esempio questo programmino:

#!/bin/bash

function saluta() {
     echo "Ciao a tutti!"
}

function fanculizza() {
     echo "andate tutti a cagare!"
}

echo "ora eseguo la prima funzione, ovvero, "saluta""
saluta
echo
echo "adesso invece eseguo la seconda funzione, ovvero "fanculizza""
fanculizza
echo

Come potete vedere eseguendo il programma, esso non esegue i comandi dentro
le graffe fino a quando non viene richiamata la funzione col suo nome (in
questo caso saluta e fanculizza).
Le funzioni sono estremamente utili per rendere un programma poco
confusionario e facile da leggere.

- Programmino Finale

Ora facciamo un bell'esempio finale con tanto di commenti.

#!/bin/bash
# Esempio finale!

# Prima di tutto definiamo la funzione "start" che faremo partire appena
# lanciato il programma
function start() {
echo "Ciao, dimmi cosa vuoi che fare:"
echo
echo "1) Cancella un file"
echo "2) Avvia il browser"
echo "3) Edita un file"
echo "4) Apri il cassettino del cdrom"
echo 
read -p "Scegli:" scelta
}

# Definiamo le altre funzioni
function del_file() {
echo
read -p "Nome file ? " filename
if [ -f $filename ]; then
   rm -f $filename
else 
   echo "il file non esiste!"
fi
}

function edit_file() {
echo
read -p "Nome file ? " filename
if [ -f $filename ]; then
   rm -f $filename
else
   echo "il file non esiste!"
fi

# facciamo partire la funzione start
start

# In base alla scelta dell'utente, il flusso del programma prende diverse vie
if [ "$scelta" = "1" ]; then
   del_file
elif [ "$scelta" = "2" ]; then
   netscape
elif [ "$scelta" = "3" ]; then
   edit_file
elif [ "$scelta" = "4" ]; then
   eject
fi

# EOF

Bene, il programma e' abbastanza semplice, per oggi mi fermo qui, la
prossima volta parleremo dei cicli iterativi, stay tuned.
.: Ritorna ad argomento Programmazione :: Ritorna a Indice Argomenti :.
Network: Cartoline virtuali - Calendari - Modelle - Playmates - Sfondi - Forum - Old SecurityNews - Warez