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]

Rispondere a