Progetto Bash. Istruzioni condizionali: IF – Introduzione Pratica

Benvenuti al post pratico del Progetto Bash riguardante il controllo IF. Prima di andare avanti dovete leggere la parte teorica “Progetto Bash. Istruzioni condizionali: IF – Introduzione” scritta dal grande Bit3Lux.

Siete pronti ?

Quando si scrive uno script Bash si parte sempre da una base e man mano che si scrive codice si tende sempre ad aggiungere dei controlli per migliorarne l’utilità. L’uso dell’istruzione IF ci viene incontro molto spesso sia per un uso base ma anche più complesso. Ma vediamo qualche esempio.

Mettiamo il caso che volessimo mettere un controllo per evitare di far eseguire lo script all’utente root. In questo caso IF ci può aiutare.

#!/bin/bash

if [ $(id -u) -eq 0 ]; then
        echo "Non è possibile eseguire lo script in maniera Root"
        exit 1
fi

exit 0

Ogni volta che lanceremo lo script la prima cosa che farà, nell’esempio di sopra, è controllare l’UID (User ID) dell’utente. Se l’UID è uguale a zero (0) vuol dire che stiamo eseguendo lo script attraverso l’utente root e quindi stamperà la frase “Non è possibile eseguire lo script in maniera Root“. Se invece l’UID è diverso da zero, allora proseguirà avanti con lo script.

Ma vediamo un altro esempio. Mettiamo il caso di voler mettere un controllo che solo l’utente www-data può eseguire questo script.

#!/bin/bash

idutente=$(id -u www-data)

if [ $(id -u) -ne $idutente ]; then
	echo "Questo script bisogna eseguirlo tramite l'utente WWW-DATA"
	exit 1
fi

exit 0

Come potete vedere l’esempio è uguale al primo fatto sopra sopra, ma con delle aggiunte. Prima cosa ho specificato una variabile dove conterrà l’UID dell’utente da noi scelto. Subito dopo dentro l’IF ho messo la regola che se l’utente è diverso da $idutente allora stamperà a video la frase e uscirà. Mentre se fosse il contrario proseguirà con lo script. Vediamo ora come possiamo controllare lo stato di uscita di alcune istruzioni.

Immaginiamo di creare uno script che controlli se un utente esiste.

#!/bin/bash

echo "Inserisci un Username: "
read utente

echo ""
grep -w $utente /etc/passwd

if [ $? -ne 0 ]; then
        echo "L'utente da te digitato non esiste."
        exit 1
else
        echo "L'utente da te digitato esiste!"
        exit 0
fi

Descriviamo un po’ questo esempio. Eseguo lo script e subito ci chiederà di inserire un utente. Inserito l’utente e messo all’interno della variabile $utente, verifichiamo tramite il comando grep se la parola inserita prima esiste all’interno del file /etc/passwd. Il comando grep uscirà con un numero ( status ) che andremo a verificarlo con l’IF. Se lo status è diverso da zero (0), allora l’utente che abbiamo inserito non esisterà sul sistema. Se invece sarà uguale a zero, allora l’utente esiste.

Consiglio: Se non vi ricordate bene il parametro speciale $? allora leggete di nuovo qui -> http://toshidex.org/2011/06/28/progetto-bash-introduzione-pratica-%e2%80%93-parte-v/

Alla prossima :)

Io & Bit3Lux

One thought on “Progetto Bash. Istruzioni condizionali: IF – Introduzione Pratica

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>