Dette er først og fremst en huskelapp for min egen del, men kanskje nyttig for andre også.
Jeg har laget mange shellscripts for å hjelpe meg i systemutvikling og til vedlikehold av tjenester. Av og til har jeg behov for å bekrefte at jeg virkelig ønsker å utføre handlingen, i tilfelle man skulle kjøre kommandoen ved et uhell, for eksempel å tømme Solr-indeksen (Solr er en søkemotor, et prosjekt fra Apache).
Ofte holder det med å bruke “read” for å lese inn tekst til en variabel, men et verktøy som heter “whiptail” gir et ncurses-grensenitt som tilbyr brukeren til å utføre forskjellige valg, for eksempel valget om “ja” eller “nei” for å utføre en kommando.
Som det aller enkleste eksempelet har man “yesno”-dialogboksen:
# Ja/Nei-dialogboks med 10 rader og 50 kolonner
# Skriver "jada" på skjermen hvis man velger "ja"
whiptail --yesno "Vil du virkelig gå videre?" \
10 50 && echo "jada"
Man kontrollerer svaret fra dialogboksen med exit-koden fra whiptail. Svarer man så “ja” i dialogboksen skrives “jada” ut på skjermen. Svarer man nei, så gjør den det ikke. Så enkelt.
Et annet eksempel er å vise en liste med som brukeren kan velge blant:
whiptail --menu "Velg noe" \
10 50 2 \
1 "Valg 1" \
2 "Valg 2" \
3 "Valg 3" \
4 "Valg 4"
Argumentet “2″ angir hvor mange valg som skal vises ad gangen, etterfulgt av ID/tekst-par for valgene. ID-en til valget som brukeren velger blir skrevet på skjerm.
Man har også andre former for dialogbokser, se “man whiptail” for flere opsjoner.