Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: AimoE - 12.02.26 - klo:17.30
-
Olin testaamassa Bash.scriptiä, jossa oli väliaikaista logiikkkaa. Ensin se kysyy käyttäjältä valintoja "zenity --list --check-list" -komennolla, ja sitten on tarkentava yes/no -kyssäri, jonka olen tehnyt tyyliin
printf "kyssäri"; read yn Yllättäen muuttuja "yn" oli tyhjä read-komennon jälkeen. Kun aikani olin lyönyt päätä ruutuun, kokeilin auttaisiko jos suorittaa zenity-komennon aliprosessissa, eli käärittynä ()-sulkeisiin. Se ratkaisi ongelman täysin. Tämän jälkeen nimesin muuttujan toiseksi, ja sekin auttoi.
Onkohan tämä fiitseri vai bugi?
-
Mulla kyllä toimii odotetusti:
printf "kyssäri";read yn && echo $yn
Jos painaa y:tä ja sen jälkeen returnia niin tulostaa y:n.
Edit - näyttääkin tulostavan y:n joka tapauksessa. :P
Edit 2 - muokattu näyttäisi toimivan.
Edit 3 - Miltähän tuo toimimaton scriptisi näyttää ?
Edit 4 - Tämä ainakin näyttäisi toimivan ...
e=`zenity --list --checklist --title="Options"\
--text="Select your features"\
--column="Use"\
--column="Feature"\
TRUE A\
False B\ ` && printf "kyssäri:" && read yn && echo $yn $e
-
Ongelmaversio ei ole enää tallessa. Keskeneräinen komentotiedosto oli tämän tyylinen, hyvin lyhyt ja yksinkertainen:
for arg in $(zenity \
--list --checklist \
--separator=' ' --print-column=2 \
--column='' --column='' false abc false xyz
)
do
printf "kyllä/ei-kysymys $arg? "
read yn || break # Ctrl-D
echo processing ${yn:-k} $arg
done
Mukana oli tietenkin zenityn --title ja --text ja erilainen arvoluettelo ja echo-rivin tilalla eri komento. Tämä yllä näkyvä toimii sellaisenaan, joten en tiedä mikä vika aiemmassa oli. Hämmentävää kun komentotiedosto on näin yksinkertainen.
Siitä tuli lopulta vieläkin yksinkertaisempi, kun korvasin zenity-komennon muuttujalla $@ ja siirsin arvoluettelon desktop-tiedoston Action-määrityksiin. Lopulliseen versioon tosin tarvittiin hieman lisäkoodia sitä varten, ettei telakasta käynnistetty pääteikkuna sulkeudu heti kun viimeinen valinta on prosessoitu. Keskeneräisessä versiossa sitäkään ei ollut silloin kun taistelin yn-kyssärin kanssa.
Greppasin yn-muuttujaa muista scripteistäni. Löysin vain yhden, jonka joskus otan sourcella mukaan. Tässä tapauksessa en sourcettanut sitä edes epäsuorasti.
Onpa mysteeri.