Newsgroup: it.comp.os.linux.iniziare
Titolo: bash script: un consiglio

Scusate il titolo un po' generico, ma non me ne veniva uno migliore.
Sto buttando giù uno script bash e vorrei renderlo un po' più
"elastico", in modo da dare all'utente una maggiore possibilità di
scelta....magari ritornando indietro per modificare diversamente alcuni
parametri. Lo so è un po' generico...
Dunque schematizzo così
---
serie di opearazioni numero 1
serie di opearazioni numero 2
serie di opearazioni numero 3
---
Ora, in  ciascunaserie di operazioni l'utente deve fare alcune scelte, e
alcune variabili assumono certi valori.
Io vorrei mettere tra una serie e l'altra una funzione che permetta
all'utente di:
continuare oppure tornare indietro alla serie precedente oppure uscire.
Capisco che forse detta cosìè molto generica la faccenda, ma penso che
sia possibile farsi un'idea e poter dare un parere...
A me la cosa più spontanea che è venuta in mente sarebbe quella di
mettere per esempio tre etichette alle 3 serie di operazioni e usare una
variabile "i" come contatore.
la funzione da usare otrebbe essere del tipo:
scrivi: premi A per tornare indietro B per continuare C per uscire
leggi: scelta
se scelta = A vai ad (i-1)
se scelta = B continua e poni i=i+1
se scelta = C esci
Il fatto è che così facendo mi viene in mente di usare un goto e non è
il massimo della vita...anzi non so neanche se in bash sia possibile
usarlo.
Se ci sono elementi sufficenti per dare qualche soluzione idea ecc ecc
sono tutto orecchi. Vi ringrazio in anticipo.
Saluti  :-P
____________________________________
Mail: johnnynews at vfemail dot net

 Saluti  :-P
quando faccio questo tipo di cose passi sempre da dialog, di posto un
pezzo di uno script che feci per degli utonti che non avevano idea di dove
mettere le mani :
funzione1()
{
codice....
}
funzione2()
{
codice....
}
while [ 1 ]; do
	tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
	dialog  --menu "      Seleziona un' azione:" 10 50 4 \
        	 1 "fai questo" \
        	 2 "fai quello" \
        	 3 "Chiudi Applicazione" 2>$tempfile
	retval=$?
	choice=`cat $tempfile`
	case $retval in
		0)
			case $choice in
				1)  funzione1;;
				2)  funzione2;;
				3)  exit 0;;
			esac;;
		1)
			echo "Programma Annullato."
			exit 0;;
		255)
			echo "Programma Annullato."
			exit 0;;
	esac
done
con dialog se nelle funzioni costruisci dehgli output appositiper altri
dialog viene fuoriu una cosa carina , ad esempio se butti la roba in un
dialog con --gauge au barre di avanzamento  etcetc.
buondivertimento :)

 buondivertimento :)
:-))
Vi propongo questo piccolo esempio, inutile, ma che fa capire il senso
della questione:
=================================================================
prima()
{
  echo "prima serie di operazioni"
}
seconda()
{
  echo "seconda serie di operazioni"
}
chesifa()
{
  # prende un argomento (passo precedente)
  # va richiamata passando quindi la funzione precedente.
  BACK=$1
  cat <<.
INVIO     per continuare
1         per tornare indietro
2         per uscire
.
  read scelta
  case $scelta in
    '') ;;
     1)
        $BACK
        read
        chesifa $BACK;;
     2) exit 0;;
  esac
}
# main
clear
prima
read
chesifa prima
seconda
read
chesifa seconda
echo ''
echo "FINE"
read
==================================================================
Diciamo che una cosa del genere mi sarebbe più ceh sufficente direi.
Ve la propongo a titolo "didattico", non so, magari se voleste
evidenziarne evidenti limiti...così tanto per dire....
Vorrei però migliorarne un attimo l'aspetto interattivo, pur lasciando
per il momento da parte dialog.
Mi sarebbe sufficiente non dover dare INVIO ad ogni immissione di un
valore richiesto.
Cioè, quando mi chiede, INVIO per continuare, 1 per tornare indietro,
2 per uscire vorrei premere per esempio 1 e basta senza dover anche
premere invio.
Non so se sia possibile, ma è un aspetto che mi piacerebbe capire meglio
Avreste qualche soluzione in merito? link a documentazione in merito
eventualmente? in ogni caso qualcosa di possibilmente semplice e restando
in bash...  :-)
Grazie allora per la disponibilità fin qui dimostrata e a presto.  :-P

 valore richiesto.
read -n 1

 read -n 1
Ecco vedi, sono queste le cose che mi piacciono del ng icoli  ;-D
Grazie mille veramente.  :-)

 mille veramente.  :-)
danke!