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

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

 writes:
  L> Sto scrivendo uno script che dovrebbe permettermi di inserire dei
  L> dati.  Fin qui non c'è problema. Leggo il dato inserito e lo
  L> memorizzo in una variabile.  Quel che vorrei fare e di cui non
  L> sono capace è modificare il contenuto di quella variabile senza
  L> passare per un file temporaneo.
[...]
Non so se hai ragioni particolari per usare tutta quella roba, ne' so
se ho ben capito il problema, pero` mi viene in mente che c'e`
"dialog" che e` molto comodo per realizzare interfacce testuali.
Ciao,
nico

nico
Ciao e grazie.
-- 
Antonio

 writes:
[...]
  L> Se fosse possibile creare una inputbox con più campi sui quali si
  L> può tornare (prima di dare l'ok mi basta) sarebbe una soluzione,
  L> ma non sono riuscito a capire _se_ si può fare.  Leggendo sul NG
  L> (google) però pare di no.
Non penso tu lo possa fare con --inputbox, pero` con --form dovresti
riuscire a tirarci fuori qualcosa di buono. Prova a guardare gli
script di esempio di dialog.
  L> Ricapitolando: 
  L> - se dialog ha delle funzionalità che si adattano
  L> alle mie esigenze l'userei, ma esteticamente e praticamente
  L> preferisco un prompt secco.
Dai, dialog non fa cosi` cagare :-)
Ciao,
nico
PS: Lo Smilzo mi perdoni, ma ho erroneamente mandato la risposta nella
    sua casella di posta.
#ifdef STORINCOGLIONITO
    goto PS;
#endif

    sua casella di posta.
Figurati!
Fosse sempre così, meglio doppia risposta che nessuna. ;-)
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

 writes:
[...]
  L> Beh, quel blu non è questo splendore rispetto al bel tono nero
  L> dello sfondo.  :-) No, è questione di gusti, ma preferisco la
  L> shell pulita, testo, anche colorato, ma su nero.  Prima o poi dar
  L> un'occhiata alle curses, ma credo sarà molto poi. :-)
Volendo, puoi modificare i colori di dialog creando un file rc, c'e`
proprio un'opzione per questo, --create-rc.
Ciao,
nico