Newsgroup: it.comp.os.linux.development
Titolo: eseguire comandi bash scritti sullo stdout da un altro processo

Anche se il subject non è chiaro, quello che voglio fare è molto semplice.
ssh-agent scrive sullo stdout i comandi per aggiornare le variabili di
ambiente utilizzate per localizzare ssh-agent stesso.
Io vorrei poter fare
ssh-agent | exec -
Al momento sono invece costretto a fare
ssh-agent > tmp
source tmp
A quanto ho capito i vari comandi della shell che accettano dei nomi di
file non supportano la sintassi speciale - per indicare lo stdin (magari
non è proprio tecnicamente possibile, non so come funziona bash).
Ci sono soluzioni migliori?
Saluti e grazie  Manlio Perillo

 ...
man xargs



Ci avevo provato:
ssh-agent | xargs eval
xargs: eval: No such file or directory
Cosa mi sfugge?
Saluti  Manlio Perillo

Manlio Perillo ha scritto:

prova con eval:
eval "`ssh-agent`"
(attenzione a scrivere gli apici giusti)
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

 ...
Non lo so.
Potresti provare qualcosa del tipo:
mkfifo -m 600 temp.socket
ssh-agent > temp.socket 
exec temp.socket 
Un poco piu` efficiente del file di scambio.
PS potresto anche provare la sostituzione dei processi
o dei parametri ma resteresti troppo ancorato a
caratteristiche della bash ed il tuo script potrebbe non
funzionare su tutti i sistemi.

 ...
Non lo so.
Mi spiace di non aver provato prima di postare.


 funzionare su tutti i sistemi.
Non fa niente.
Voglio solo il metodo più semplice su Linux Debian + bash.
A proposito, con bash è possibile definire delle variabili e fare in
modo di salvare l'ouput di un comando nella variabile e poi
eseguirne il contenuto?
Saluti  Manlio Perillo

 
Perfetto grazie!
Le parentesi " comunque sembrano non servire.
La funzione svolta dalle parentesi ` come si chiama?
Saluti  Manlio Perillo

 eseguirne il contenuto?
  ~$ pippo=`echo date`; eval $pippo
  Thu Dec 28 16:48:41 CET 2006
M

 
Nel manuale della Bash lo chiamano "Command substitution".
Lo stesso effetto č ottenuto con:
  $( command )
Max

 La funzione svolta dalle parentesi ` come si chiama?
qui ti hanno gia' risposto.


 ...
Evidentemente il cenone di natale non mi ha fatto bene.
Ho provato questa sequenza di comandi con cat
e devo dire che ho fatto alcuni errori nel riportarla.
I comandi corretti sono:
$ mkfifo -m 600 temp.socket
$ cat > temp.socket
$ exec < temp.socket &
Se scrivi "exec temp.socket" non funziona.
Ma questo non e` un errore grave; il mio errore piu` 
grave e` non aver letto i manuali:
man ssh-agent
...
 There are two main ways to get an agent set up: The first 
 is that the agent starts a new subcommand into which some
 environment variables are exported, eg ssh-agent xterm &.
 The  second is that the agent prints the needed shell  
 commands (either sh(1) or csh(1) syntax can be generated)
 which can be evalled in the calling shell, eg
 eval `ssh-agent -s` for Bourne-type shells such as sh(1) or
 ksh(1) and eval `ssh-agent -c` for csh(1) and derivatives.
...



Scusate se riprendo un vecchio POST.
Ho provato a fare
pippo=`cat afile`
ma tutti i caratteri di fine linea vengono persi.
Quello che devo fare ora è sostituire una espressione regolare in diversi
files, e per ora sto facendo
sed s/xxx/yyy/ $1 > tmp
cat tmp > $1
(script bash eseguito tramite find)
ma richiede la creazione di un file temporaneo.


 cat tmp > $1
ma non e' piu' facile un mv + mktemp?
ah, comunque mica e' vero
$ a=test
$ cat b
ciao
mondo
$ cat b > $a
$ cat test
ciao
mondo
$
-- 
Under construction

) 
ps: ometto di avvertirti sui possibili problemi in cui puoi incorrere 
caricando un intero file in una variabile shell - ovvero: immagino che 
quel tuo file sia di dimensioni contenute...
