Newsgroup: it.comp.os.linux.iniziare
Titolo: [BASH] Correzione di dati inseriti con read

                                  ]
[ Subject: [BASH] Correzione di dati inseriti con read                     ]
[ Newsgroups: it.comp.os.linux.development                                 ]
[ Message-ID: <jti8pb...@AP.com>                                       ]
Sto scrivendo uno script che dovrebbe permettermi di inserire dei dati.
Fin qui non c'è problema. Leggo il dato inserito e lo memorizzo in una
variabile.
Quel che vorrei fare e di cui non sono capace è modificare il contenuto
di quella variabile senza passare per un file temporaneo.
Lo stralcio di script, che vado a commentare, è il seguente:
#v+
#Innanzitutto ho definito una funzione per il posizionamento del cursore:
pos ()
{
tput cup $1 $2
}
# Qui sotto invece va la parte dell'inserimento dei dati
ins_dati()
{
        clear
        #         MENU DI INSERIMENTO DATI
        # Il motivo per cui nelle "echo" c'è anche la stampa delle
        # variabili è per poterle modificare in seguito, come si capirà
        # dopo.
        pos 3 8 ; echo "Script per l'inserimento dei dati"
        pos 4 8 ; echo "================================="
        pos 6 4 ; echo "Inserisci il nome      : $nome"
        pos 7 4 ; echo "Inserisci l'indirizzo  : $indirizzo"
 
 
        #         INSERIMENTO NELLE VARIABILI
        # Mi posiziono nelle righe stampate dopo i ":" e leggo la
        # variabile inserita
        pos 6 29 ; read -e nome          
        pos 7 29 ; read -e indirizzo
        pos 10 15; read -p  "Le informazioni sono corrette? [Y/n]" conferma
 
 
        # Se le info sono corrette vado a processarle, dopodiché azzero il 
        # contenuto delle variabili per non farle ristampare dalle
        # "echo" sopra. Poi si esce, ma la funzione è eseguita in un
        # ciclo while, per cui verrà riproposto il menu di inserimento
        # pulito.
        # Se invece rispondo no nelle mie intenzioni il menù viene
        # riproposto a causa del ciclo while, ma i campi saranno
        # "precompilati" con il vecchio contenuto delle variabili.
        # Nelle mie intenzioni il testo sarebbe da poter modificare, ma
        # in realtà il campo di testo risulta vuoto, e infatti con le
        # frecce non riesco a muovermi. Per conferma ho inserito la
        # stampa delle due variabili dopo, qui sotto, e vedo che se non
        # scrivo nulla le variabili restano vuote.
        case $conferma in
 
 
                [nN])   
                        # non faccio nulla, perché dato che la funzione
                        # è inserita in un ciclo while continuo attendo
                        # che mi riproponga il menù con le variabili già
                        # inserite.
                ;;
                *)
                echo "$nome"            # Inserito per DEBUG
                echo "$indirizzo"       # DEBUG
                read                    # Per bloccare in modo da poter
                                        # visualizzare i due "echo"
                                        # precedenti.
                # Qui sotto vado a azzerare le variabili
                        nome=''
                        indirizzo=''
                        ;;
        esac
}
#v-
Dopo queste due funzioni c'è solo il corpo dello script, cioè:
#v+
loop=1
while [ "$loop" = 1 ]
do
        ins_dati
done
#v-
Chi sa darmi un consiglio su come fare?
O per lo meno, è possibile fare questo da shell? Bisogna usare qualcosa
di diverso dalla readline?
Quel che non vorrei fare è richiamare il vi su un file temporaneo.
Accetto ogni consiglio! :-)
TIA
-- 
Antonio
-- 
Antonio | Per trovare un file o una directory in base al nome:
Tip  of | $ find -iname '*parola*'            # Partendo dalla directory corrente
the day | $ find /path/dir -iname '*parola*'  # Partendo da una qualsiasi
0012    |

 Antonio
Comme ca va?
michele

michele
Ciao.
-- 
Antonio |                         - CERCO LAVORO -                       
Paolini | Sono laureato in "Ingegneria Elettronica" (vecchio ordinamento). 
        | Se sei interessato puoi trovare il mio Curriculum Vitae e i dati
	| personali per contattarmi qui: 
http://www.geminisoft.com/paolini

dia=`dialog --stdout --inputbox "Raddoppia le lettere" 10 25 "$testo"`
Ma dopo aver rediretto la variabile in un file di testo ed averlo aperto
con un editor esadecimale ho osservato che di a capo non c'è neanche
l'ombra.
Morale: mi ci sto facendo male!!! 
Chi sa darmi un input?
^^^^^^^^^^^^^^^^^^^^^
Nota: il testo del form l'ho messo così per rendere più leggibile il
codice in questo messaggio.
Ah, Un altra domanda. A che cappero serve aprire e chiudere il
descrittore di file "3"?
[snip]
