Comincio a vedere l'uscita... se qualcuno mi dà una spinta forse ci arrivo!
Dapprima ho provato a sostituire whiptail con dialog, così tanto per vedere se le cose fossero migliorate, ed ho sostituito anche la radiolist con un semplice menù: #!/bin/sh dialog --title "Titolo" --menu "scegline uno" 20 70 10 "A" "Descrizione A" "B" "Descrizione B" Lo script fatto così funziona, ma fin qui funzionava già prima. Ancora non riesco a mettere in una variabile il tag che dialog mi restituisce. Poi, da programmatore un po' vecchio stile quale sono, ho pensato al tipico workaround sporco e brutto da vedersi, ma che nella mia testa poteva funzionare, ovvero redirigere lo standard output di dialog su di un file temporaneo: #!/bin/sh dialog --title "Titolo" --menu "scegline uno" 20 70 10 "A" "Descrizione A" "B" "Descrizione B" > tag.tmp Bum! Non funziona più. Di nuovo dialog non visualizza nulla sullo schermo anche se in effetti viene eseguito. Ecco che mi si è accesa la lampadina: ma vuoi vedere che la bash, per implementare la funzionalità di TAG=`comando` non fa altro che redirigere lo standard output di "comando" e magari anche lo stderr? E vuoi vedere che dialog e whiptail non fanno altro che usare lo standard output (o error) con sequenze di escape per "disegnare" la finestra di dialogo? O forse è ncurses che fa questo? Però, se così fosse, dovrei trovare un bel po' di spazzatura in tag.tmp, invece no. Il file resta vuoto. Ma siamo sicuri che è vuoto solo perchè "cat tag.tmp" non mostra nulla? Proviamo con hexdump. Tada! Ecco la tanta bella spazzatura che volevamo vedere. È solo che inizia con un bell'EOF, quindi cat non mostra nulla. Dunque ho capito l'arcano, ma resta il problema. Come separo la spazzatura dall'output interessante, ovvero come faccio a permettere a dialog (o whiptail) di disegnare le sue sequenze di escape sul video ma redirigere la parte che mi interessa? man dialog. Che belle opzioni, proviamo con "--stdout". Così funziona. Ma, ahimè, funziona perché in questo modo ncurses scrive su stderr, il che è sconsigliato sulla pagina di manuale di dialog proprio dove parla di quell'opzione. Vorrei fare esattamente il contrario (ovvero vorrei il comportamento di default che è quello corretto), ma senza usare files temporanei che escono dalla tomba di Turing... Cioè: dialog ... 2> tag.tmp TAG=`cat tag.tmp` funziona, ma non mi piace. Vorrei TAG=`dialog ...` dove però a TAG viene assegnato ciò che arriva su stderr, mentre stdout viene lasciato stare verso il video. C'è un modo di dirlo a bash? -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]