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






Pingback: toshidex ~# » Blog Archive » Progetto Bash. Istruzioni condizionali: IF – AND & OR Pratica