Discussione:
Input da script.
(troppo vecchio per rispondere)
Lagrange
2010-01-02 18:53:15 UTC
Permalink
Ciao a tutti, dovrei usare un comando da uno script di shell. Questo
comando, un altro script, richiede un input all'utente ed in base a
tale "scelta" effettua delle operazioni e successivamente produce un
output.

Dovendolo richiamare da shell, devo riuscire a passare la scelta
dell'utente e redirigere l'output. Per la redirezione, ho risolto; ma
non riesco a creare una linea di chiamata nella quale "inserire" anche
la scelta che il comando richiede all'utente dopo che esso è andato in
esecuzione.

Cioè supponendo di avere il comando X il quale lanciato semplicemente
X
tua scelta:

al che l'utente inserire un numero. Come posso fornire tale numero
richiamando il comando da script di shell?

Grazie a tutti! Lidia.
Alessandro Selli
2010-01-03 12:32:32 UTC
Permalink
Post by Lagrange
Ciao a tutti, dovrei usare un comando da uno script di shell. Questo
comando, un altro script, richiede un input all'utente ed in base a
tale "scelta" effettua delle operazioni e successivamente produce un
output.
Dovendolo richiamare da shell, devo riuscire a passare la scelta
dell'utente e redirigere l'output. Per la redirezione, ho risolto; ma
non riesco a creare una linea di chiamata nella quale "inserire" anche
la scelta che il comando richiede all'utente dopo che esso è andato in
esecuzione.
Cioè supponendo di avere il comando X il quale lanciato semplicemente
X
al che l'utente inserire un numero. Come posso fornire tale numero
richiamando il comando da script di shell?
Ammettto di non avere le idee chiare su cosa ti serve. Quello che ho
capito è che tu hai due script, uno dei quali manda in esecuzione
l'altro che richiede un input all'utente. Il tuo problema sarebbe
quello di passare l'input dell'utente dal secondo script (processo
figlio) al primo, il genitore. Se è questo che vuoi, si può fare così
(lo spiego con un esempio):

***@krakatoa ~ $ cat /tmp/script1.sh
#!/bin/sh

OUTPUT_SCRIPT2=$(/tmp/script2.sh)

if test -n "$OUTPUT_SCRIPT2"
then echo "L'output dello script 2 è: $OUTPUT_SCRIPT2"
else echo 'Nessun output dallo script2' >&2
exit 1
fi

***@krakatoa ~ $ cat /tmp/script2.sh
#!/bin/sh

QUALCOSA=''
until test -n "$QUALCOSA"
do echo -n 'Scrivimi qualcosa! ' >&2
read QUALCOSA
done

echo "$QUALCOSA"



***@krakatoa ~ $ /tmp/script1.sh
Scrivimi qualcosa! Gatto
L'output dello script 2 è: Gatto
***@krakatoa ~ $


Se invce quello che devi fare è il contrario, passare dei dati dal
primo script (il genitore) al secondo (il figlio), allora puoi fare in
questo modo:

***@krakatoa ~ $ cat /tmp/script3.sh
#!/bin/sh

QUALCOSA=''
until test -n "$QUALCOSA"
do echo -n 'Scrivimi qualcosa da dare in input allo script 2! '
read QUALCOSA
done

echo "$QUALCOSA" | /tmp/scritp2.sh
***@krakatoa ~ $ /tmp/script3.sh
Scrivimi qualcosa da dare in input allo script 2! Questa riga
Scrivimi qualcosa! Questa riga
***@krakatoa ~ $


Spero di aver capito bene e che almeno uno degli esempi ti sia d'aiuto.



Ciao,
--
Alessandro Selli http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
Lagrange
2010-01-04 09:31:10 UTC
Permalink
  Ammettto di non avere le idee chiare su cosa ti serve.  Quello che ho
capito è che tu hai due script, uno dei quali manda in esecuzione
l'altro che richiede un input all'utente.  Il tuo problema sarebbe
quello di passare l'input dell'utente dal secondo script (processo
figlio) al primo, il genitore.  Se è questo che vuoi, si può fare così
  Spero di aver capito bene e che almeno uno degli esempi ti sia d'aiuto.
  Ciao,
--
Alessandro Sellihttp://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
 signature.asc
< 1KVisualizzaScarica
Ciao Alessandro,
sei stato chiarissimo e ciò che mi serviva era proprio il primo caso,
dei tuoi esempi.

Grazie! Lidia.

Loading...