Newsgroup: it.comp.os.linux.iniziare
Titolo: zenity in ciclo while true ?

Ho una serie di script bash, vorrei lanciarli tramite un menu zenity.
Cioè creo uno script "padre" che propone un menu zenity con una lista di 
n script da eseguire
while true; do
sel=$(zenity ...)
case $sel in
foo1)
x-terminal-emulator -e "bash -c \"script.sh; read -p 'Press ENTER to 
close terminal...' key\""
foo2)
...
Il workaround di eseguire bash e non direttamente lo script serve perchè 
altrimenti il terminale si chiude nonostante il read key (almeno questo 
è quello che ho googlato)
Il problema è questo:
Io voglio questo:
finestra "principale" con il menu degli script
scelgo uno script
si apre il terminale che lo esegue
termina, premo un tasto e chiudo il terminale
riappare il menu zenity (solo DOPO che l'utente ha chiuso il terminale)
invece adesso avviene questo:
si apre zenity
scelgo lo script
si apre il terminale che lo esegue
subito si riapre il menu degli script (senza che lo script di prima 
abbia finito)
forse sarebbe più semplice aggiungere il "press any key" nei singoli 
script, ma non avrebbe senso quando poi tali script saranno eseguiti 
manualmente da un terminale aperto precedentemente e che resterà aperto...
Non è una questione di vita o di morte certo, ma vorrei più che altro 
capire il motivo per curiosità: ho fatto tutta una serie di prove ma non 
ho capito la "causa reale" :-)


Facebook: Massimo Bacilieri

 Il workaround di eseguire bash e non direttamente lo script serve perchè
No, l'errore te l'ho segnalato sopra.
Ciao
-- 
last-kernel-inside


Eh, quel workaround mi serve per mantenere aperto il terminale.
Gli script di cui sopra sono pensati per uso in un terminale già aperto, 
quindi non includono niente del tipo "Press any key to exit".
Se faccio direttamente -e script.sh , a fine script si chiude senza che 
l'utente possa vedere l'output...
Ho trovato la soluzione in
http://stackoverflow.com/questions/3512055/avoid-gnome-terminal-close-after-script-execution
.
Poi pensavo di aver risolto aggiungendo
x-terminal ... &
wait $!
Ma non funziona comunque (si riapre subito zenity)
Ho provato a mettere echo $! e il problema è che $! rimane vuota...
Insomma, il problema è in quella riga, ed è quello che dici tu.
A questo punto: come fare per semplificare il tutto ma mantenere la 
caratteristica che il terminale deve restare aperto quando lo script 
"figlio" finisce, e zenity deve riapparire solo quando l'utente chiude 
manualmente il terminale?
Grazie mille dell'aiuto :-)
ciao

 Eh, quel workaround mi serve per mantenere aperto il terminale.
E non basta un "read" in fondo agli script?
Oppure, in fondo alla riga che richiami. Per esempio, se questo è lo script
che vuoi eseguire (sia esso test.sh):
#!/bin/bash
ls -l
cat "pippero" > ~/.logfile
echo "fatto"
e questo (test2.sh) il tuo script con zenity:
#!/bin/bash
XX=0
while [ "$XX" != "2" ]; do 
	XX=`zenity --list --text="scegli" --column x --column y \
		--radiolist --print-column=2 TRUE "1" FALSE "2"` 
	if [ "$XX" == "1" ]; then 
		aterm -e test.sh read
	fi
done
Dovrebbe essere risolutivo.


 		aterm -e test.sh read
Se eseguo questo, ad esempio gnome-terminal -x ls read,
vedo il terminale per una frazione di secondo :-(
Perï¿œ ho un dubbio atroce:
provando il mio script in un xterm e non in gnome-terminal, sembrerebbe 
funzionare.
Aggiungi che invocare x-terminal-emulator non ï¿œ detto sia uguale che 
invocare xterm o gnome-terminal...
Non vorrei che il tutto fosse molto piï¿œ semplice del previsto :-)
Grazie davvero dell'aiuto

 Grazie davvero dell'aiuto
Secondo la manpage di gnome-terminal:
http://pwet.fr/man/linux/commandes/gnome_terminal
ho come idea che invece di "-e" tu debba usare "-x" per eseguire degli
script dentro al terminale, altrimenti vi esegue soltanto il *comando*.
Il che tradotto vuol dire che finché esegui solo lo script come fosse un
comando, la cosa in pratica coincide, ma se vuoi eseguire uno script con un
output e dei parametri, il -e non ottiene lo stesso risultato di -x.
E -x fa allora quello che fa -e in aterm... prova semplicemente così.



Ho giï¿œ provato, in un caso esce un "error executing command line", 
nell'altro si richiude subito
Comunque con xterm al posto di gnome-terminal funziona
xterm -e "mioscript $file; read -p 'Press ENTER to close terminal...' key"
Direi che la cosa ï¿œ risolta, grazie mille :-)