Newsgroup: it.comp.os.linux.sys
Titolo: Suggerimento

Salve a tutti,
 mi scuso in anticipo per la probabile stupidita' della domanda. In uno
scripth in ambiente tcsh o csh come posso passare l'output di un
programma ad una variabile?
Cerco di spiegarvi meglio quello che vorrei realizzare con il seguente
esempio:
.
control  ->  $TEST
if ( $TEST = 200 ) then
.
Il punto incriminato e' la prima riga l'eseguibile control genera un
certo output che viene inviato allo standard output mentre io  vorrei
reindirizzarlo alla variable  TEST che, successivamente, viene
utilizzata  per selezionare diverse opzioni sull'esecuzione di
successivi programmi.  E possibile fare una cosa del genere e come?
Grazie per l'eventuale aiuto
Massimo

 programma ad una variabile?
non so in csh, ma in bash puoi fare:
$ TEST=$(control)
ciao,
marco

Marco Lanzotti wrote:

Grazie per l'indicazione, funziona anche se control deve avere un input?
ovvero $TEST = $(control  <  $1)
 Grazie di nuovo e ciao.
 Massimo

 ovvero $TEST = $(control  <  $1)
vorrai dire $TEST = $(echo $1 | control)
ciao,
marco

Marco Lanzotti wrote:

Caro Marco,
 ti ringrazio nuovamente per i consigli e ti prego di scusarmi per la
stupidita' delle domande. Il programma
 control ha come input il file "$1" e genera allo standard output un codice
numerico che e' quello che vorrei
 assegnare alla variabile test.  Per cercare di essere piu' chiaro ecco
quello che vorrei realizzare:
 La "macro" runprg che ha un certo input file ed in base alle richieste
diciamo di memoria lancia una versione
 opportuna dell'eseguibile
 runprg:
  if (null$1 == null) then
  echo "Input file no specified"
  exit 1
  endif
  -- inizio punto dolente, per me
 $TEST = deve avere come definizione il risultato di control <$1 che e'
inviato allo standard output
 -- fine "punto dolente"
 if ($TEST < 300) then
 path/prg <$1 >$2
endif
if ($TEST < 200) then
 path/prg <$1 >$2
endif
.
.
ecc...
Ti ringrazio se vorrai ancora dedicarmi un po' del tuo tempo.
Ciao, Massimo

  assegnare alla variabile test. 
ok, in questo caso era corretto
TEST = $(control  <  $1)
(senza il '$' davanti a TEST)
avevo capito che $1 conteneva i dati da passare in stdin a control, non
il nome del file contenente i dati
ciao,
marco

 marco
 Ok ho provato in shell bash ad usare questa sintassi ma ottengo un errore,
ovvero TEST: comando non trovato. Hai qualche idea del motivo lo script e' come
nel precedente mail con le modifiche dell'if per la
bash shell.
Grazie, ciao
Massimo

 bash shell.
if test $TEST -lt 300; then
 ....
else
 ....
fi
ciao,
marco




 TEST = $(echo $1 | /usr/local/bin/control )
togli gli spazi all'*=*:
TEST=$(echo $1 | /usr/local/bin/control )
ma non doveva essere TEST=$(/usr/local/bin/control < $1)?
ciao,
marco

Dovrei vergognarmi della mia abissale ignoranza!
   Caro, Marco
    grazie dell'aiuto ora tutto e' a posto e lo script funziona si scusa la riga
corretta e':
TEST=$(/usr/local/bin/control < $1)
   conosci qualche manuale o articolo un po' piu approfondito sulla shell bash
rispetto a quello che si trova
   con il man?
   Grazie,
   Massimo


 rispetto a quello che si trova
potresti cominciare con questo:
http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html
ciao,
marco

Caro Marco,
    grazie per l'aiuto.
   Ciao Massimo
