Brukar använda zenity för användarinmatningar och man får då ett returvärde så att man kan se om användaren klickade OK eller Avsluta eller liknande. 0 betyder OK (eller Ja) och man kollar då $?-variabeln. Jag har fått för mig att detta test måste köras omedelbart efter zenity-kommandot, så det duger alltså inte att först slänga in ytterligare ett kommando dessförinnan. Stämmer detta? Och i så fall, beror det på att alla kommandon påverkar $?-variabeln?
Här är ett litet utdrag ur min kod:
Kod: Markera allt
Continue="Yes"
while [[ "$Continue" = "Yes" ]]; do
Instrument=$(zenity --list \
--title "Välj musikinstrument" \
--text="Välj från listan:" \
--column="Instrument" \
--height=460 \
--width=250 < "${InstrumentsList}") && \
Musicians=$(zenity --list \
--title "Välj musikutövare" \
--text="Välj från listan:" \
--column="Val" \
--column="Instrument" \
--checklist \
--separator=", " \
--height=460 \
--width=250 < "${MusiciansList}")
if [[ ! $? ]]; then
Continue="No"
fi
echo "${Instrument}: ${Musicians}" >> "${Tempfile}"
done
Om någon vill testa hur det ser ut ut praktiken, så ser filerna som används för att fylla dialogrutorna ut så här (filnamnen får man ju definiera själv i början), om vi börjar med InstrumentsList:
Kod: Markera allt
Accordion
Acoustic guitar
Backing vocals
Bass guitar
Boot
Cello
Digital drums
Double bass
Drum machine programming
Drums
Eggz
Harmonica
Keyboard
Keys
Lead guitar
Lead vocal
Organ
Rhythm guitar
Kod: Markera allt
FALSE
Jeans Fullberg
FALSE
Jochny Jochnykov
FALSE
Mnuef Bertilstedt
FALSE
Knutte Nidgren
FALSE
Marika Skäggelin
FALSE
Mark Axelsten
FALSE
Mikku Söderstram
FALSE
Kulan Kulsson
FALSE
Ollurf Thygelram
FALSE
Rågur Andersgren
FALSE
Riga Krig
FALSE
Sama Grynnesson
FALSE
Sarga Landblüme
FALSE
Stafflian Öronsson
FALSE
Stephan Stephanovič
FALSE
Stenfan Redlös
FALSE
Thomus Björkstam
FALSE
Tomat Presstånk