Shell Script Linux Interattivi con whiptail

In questa guida, vi mostrerò come utilizzare Whiptail, uno strumento che vi permetterà di donare ai vostri programmi Bash un menù grafico testuale.

Verificate dal terminale, la presenza dello strumento eseguendo il comando whiptail , che se presente vi mostrerà le sue opzioni

 

creiamo un file bash, che renderemo successivamente eseguibile, lo chiamerò shellgui1.sh , per crearlo da terminale potete utilizzare vi oppure nano , personalmente preferisco il secondo, digitate il comando: nano shellgui1.sh

digitate nell’editor le seguenti righe:

#! /bin/bash
whiptail --yesno "Conosci whiptail?" --yes-button "Si, lo conosco" --no-button "No, mai sentito prima" 10 70
CHOICEs=$?

La prima riga indica al sistema che intendiamo eseguire il contenuto con la shell bash

la seconda riga implementa il comando come da manuale, nella terza riga, la variabile choice conterrà il risultato della selezione (0 se si seleziona no, 1 se si seleziona si)

Salviamo il file con la combinazione di tasti rapidi CTRL + O successivamente CTRL + X

rendiamo il file creato eseguibile utilizzando il comando :

chmod +x shellgui1.sh

 

eseguiamo lo script bash creato con il comando:

./shellgui1.sh 

Verrà mostrato nel terminale la dialog di selezione si/no , manipolabile con le frecce direzionali della tastiera

 

Modificando il precedente script, possiamo aggiungere un titolo come segue:

#! /bin/bash 
whiptail --title "Prendi una decisione" --yesno "Conosci whiptail?" --yes-button "Si, lo conosco" --no-button "No, mai sentito prima" 10 70 
CHOICEs=$?

Eseguendolo otteniamo:

 

Ora se vogliamo eseguire una azione alla selezione, dobbiamo utilizzare un pò di bash scripting,ad esempio alla nostra scelta dal menù si/no mostrato, stampiamo su terminale le frasi:

  • “hai detto di conoscerlo” per il si
  • “non lo conosci” per il no

Per ottenere questo comportamento, modifichiamo lo script come segue

#! /bin/bash
whiptail --title "Prendi una decisone" --yesno "Conosci whiptail?" --yes-button "Si, lo conosco" --no-button "No, mai sentito prima" 10 70
CHOICEs=$?
if [ $CHOICEs = 0 ]; then
 echo "hai detto di conoscerlo "
else
 echo "non lo conosci"
fi

Leggendo le opzioni possibili, possiamo costruire varie tipologie di finestre di dialogo interattive. In definitiva con questo strumento, possiamo dare un aspetto più gradevole ai nostri script bash 🙂

 

Scarica i Sorgenti del Tutorial da GitHub