> MENU

Corso su Mono: Anatomia di un’applicazione

Corso su PHP: Controllare l’esecuzione (1)

16 gennaio 2008 Visualizzazioni: 36881 Focus

Creare script bash shell in pochi minuti (Parte I)

La bash shell, come già discusso altre volte, ci permette di poter gestire il nostro sistema GNU/Linux preferito. Eppure, non si è fatto altro che utilizzare una parte delle proprie risorse. Nella vita di ogni buon linuxiano, infatti, arriva il momento in cui si desidera scoprire l’intero potenziale della shell.

Per questo motivo, si inizia a scrivere script di shell. Le motivazioni possono essere molteplici dovute ad esigenze differenti: curiosità, necessità, lavoro, messaggi subliminali arrivati direttamente dal kernel e simili.

A differenza di quanto si possa credere, imparare a scrivere degli script è tutt’altro che difficile. Come per ogni nuova cosa da imparare, con un pizzico di impegno si potranno raggiungere dei risultati eccezionali. Uno script di bash non è altro che una lista di comandi da eseguire, salvati in un file con estensione sh. La sintassi da imparare è molto semplice e le regole utilizzate sono poche e ben definite. L’argomento è decisamente vasto, e in rete si possono trovano centinaia e centinaia di guide scritte da svariati autori su questo linguaggio di scripting. In questo articolo, verrà mostrato che bastano davvero pochi preziosi minuti per poter imparare i comandi essenziali ed iniziare subito ad entrare in questo mondo.

PRIMA DI INIZIARE
Per scrivere uno script di shell, basta un qualsiasi editor di testo. Che sia esso Gedit, Kate, Vi, Emacs od altro, non ha importanza. L’unica cosa essenziale è la voglia di imparare. Buon divertimento!

QUATTRO REGOLE FONDAMENTALI

Per ogni script che scriverete, ricordatevi che dovete tenere a mente quattro semplici ed indispensabili regole:

I - Tutti gli script iniziano con la seguente riga:

#!/bin/bash

In questo modo si identifica che il file è uno script ed utilizza la shell bash.

II - L’estensione degli script è .sh

Ogni volta che salvate lo script appena creato, ricordatevi che deve avere come estensione sh.

III - Uno script, per funzionare, deve essere reso eseguibile

Una volta salvato lo script, per renderlo eseguibile dovrete dare il seguente comando:

chmod +x nome_del_tuo_script.sh

IV - Avviare lo script attraverso ./
Per poter avviare uno script, da terminale, dovrete procedere come segue:

./nome_del_tuo_script.sh

LE VARIABILI COMUNI
Le variabili che verranno elencate di seguito, indicano delle costanti che vi permettono di ottenere immediatamente determinate operazioni.

$BASH
Indica il percorso dell’eseguibile Bash.

$HOME
Indica la directory Home dell’utente.

$HOSTNAME
Indica il nome dell’host.

$OSTYPE
Indica il nome del sistema operativo in uso.

$PATH
Indica il percorso dell’eseguibile.

$PS1
Indica il primo prompt dei comandi.
Nota: PS1 è settato di default su “$” mentre, se utilizzate PS2, sarà settato su “>”.

$PWD
Indica la cartella di lavoro corrente.

$USER
Indica l’utente loggato nel sistema.

LE ISTRUZIONI DI COTROLLO

L’istruzione IF
L’IF è l’istruzione più semplice che si può trovare.
Corrisponde alla classica condizione:

SE proposizione
ALLORA
agisci in questo modo
ALTRIMENTI
agisci in quest’altro modo

Sintassi:

if la condizione è vera
then
esegui comando
else
esegui comando
fi

Se si avesse bisogno di più condizioni annidate, la sintassi sarebbe:

if la condizione è vera
then
esegui comando
elif altra condizione vera
then
esegui comando
else
esegui comando
fi

Nota: ricordatevi sempre di “chiudere” l’if mettendo alla fine il corrispettivo fi, altrimenti il sistema vi darà errore!

Esempio:

if ((Voto>=18))
then
echo "Promosso!"
else
echo "Mi spiace…Bocciato!"
fi

La prima parte di questa guida è giunta a conclusione. Nella prossima puntata, finiremo di vedere le istruzioni di controllo ed i caratteri speciali. Non perdetevela!

di Gianfranco Limardo - TuxJournal.net

twittergoogle_pluslinkedinmail
  • http://www.stenoweb.it steno

    Non credo sia obbligatoria l’estensione .sh …

    • Varial King

      Ragazzi….
      Linux non è per tutti… purtroppo lo avete dimostrato con i vostri commenti.
      ——————
      — SlackWare —-
      ——————
      — VK — Taem —
      ——————

  • FussyPenguin

    Non solo l’estensione non è obbligatoria, ma anche lo shebang (“#!/bin/bash”)…
    E il pezzo di codice if-then (sul voto) è sbagliato in un sacco di parti, e non funziona (le quadre invece delle tonde, il dollaro per la variabile)…

    Io che sono un utente medio, me la cavo, ma chi è davvero interessato a questo articolo, mi sa che non lo apprezza mica tanto.

  • bruno taglienti

    E` sbagliato anche >=18.
    la sintassi corretta e`:

    if [ $Voto -ge 18 ]
    then …

  • silver

    E’ vero ci sono un sacco di errori meglio seguire le guide ufficiali

    http://tldp.org/guides.html
    http://tldp.org/LDP/abs/html/

    io mi sono trovato benissimo

  • / gian

    @ FussyPenguin:
    “Non solo l’estensione non è obbligatoria, ma anche lo shebang (”#!/bin/bash”)…”
    E’ vero. Ma è vero anche che è preferibile scrivere del codice in maniera formalmente corretta con tutte le cose al posto giusto.
    Altrimenti, imho, sembra che il codice scritto sia fatto in maniera veloce, con leggerezza, senza stare a guardare troppo la forma.

    “E il pezzo di codice if-then (sul voto) è sbagliato in un sacco di parti,”
    Grazie per la segnalazione ma, l’unica parte errata era la mancanza della doppia parentesi nella condizione dell’If.
    L’obiettivo di questo esempio, comunque, è semplicemente far capire come funziona l’if a chi non sa cosa sia, non certo la stesura di uno script completo.
    Dunque, quali altri errori sono presenti?

    “e non funziona”
    Uhm..lo script sarebbe così:

    #!/bin/bash

    # Inserisci quello che serve per testare le condizioni

    Voto=18

    if ((Voto>=18))
    then
    echo “Promosso!”
    else
    echo “Mi spiace…Bocciato!”
    fi

    ..adesso funziona?
    Salva lo script anche come voto.pippo, tanto continua a funzionare!

    @ bruno taglienti:
    Così mi anticipi gli argomenti della seconda parte!
    Comunque, se si scrive:
    if ((Voto>=18))
    funziona lo stesso, fidati!

  • paul

    Anche la sintassi del testo non scherza. C’è un “che difficile” disperso, lontano dal pensiero non concluso di qualche paragrafo prima (“tutt’altro”).

    Insomma, lodevole il gesto di scrivere articoli di divulgazione, ma almeno cerchiamo di rileggerli. (Capita a tutti, comunque..)

    saluti,
    Paul

  • http://www.blackhats.altervista.org djkoock

    e rimettere windows no?

  • LucaMakina

    Io lo apprezzo comunque..

  • http://cortediazathoth.altervista.org Azathoth

    Io ho trovato questa breve spiegazione abbastanza chiarificante… In Internet si trova tantissima confusione sull’argomento.

  • Mauro

    la 2a puntata non è mai uscita ?

    • stambeccuccio

      LOL!!

  • Roberto

    ottima guida.. migliore di quella scritta dal professore

  • xFabioMoDz

    Bella guida ottimo lavoro Gianfranco Limardo ;) ma una cosa il link alla seconda guida?!..

  • Oscar Sironi

    Terminare gli shell script con “.sh” non è necessario, si è sempre fatto così, diciamo per convenzione, per distinguerli dagli altri, ma funzionano anche se li chiami .tux :-)