Desidero eseguire lo stdout di un processo e analizzarlo con tre programmi diversi. Sono stato in grado di usare named pipe, ma posso usare fd's.Come eseguire il tee in pipe di fd anziché in named
Ecco cosa funziona finora:
exec 3< <(myprog)
tee p1 p2 >/dev/null <&3
cat p1|ap1 &
cat p2|ap2 &
p1 e p2 sono stati creati con mkfifo. ap1 e ap2 sono programmi di analisi. Non so se lo sto dicendo bene, ma c'è un modo per tee
in due nuovi fd invece? Qualcosa di simile a questo:
exec 3< <(myprog)
tee >&4 >&5 <&3
cat <&4|ap1 &
cat <&5|ap2 &
Ahh. Potrebbe funzionare. C'è un modo per giocare a fd? ap1 e ap2 sono comandi enormi con pipeline e tonnellate di interruttori. Sarà più facile leggere se posso usare una fd. – User1
@ User1: è sicuramente possibile (e ha il vantaggio di lavorare in shell che non supportano '<()' and '>()'), ma la sintassi è scomoda. Qui sarebbe più semplice definire 'ap1' e' ap2' come funzioni. – Gilles
Qual è l'altra sintassi? Ho appena notato che uso le istruzioni in alcune parti dello script che modificano il modo in cui viene chiamato ap1 in base ai parametri di input. '>()' probabilmente non funzionerà troppo bene nel mio caso. Ma non so come altro posso chiamarlo. Qualche idea? Grazie per il tuo aiuto finora. – User1