ho un problema di shell programming che non riesco a risolvere.
Forse uno
di voi ha la soluzione.Il problema e' il seguente:
Ho una pipeline di comandi, tipo "CC | SS" dove CC produce del
output e SS
e' un filtro che riformatta l'output di CC. Io voglio eseguire la
pipe e
salvarmi il valore di ritorno di CC.Ho provato i seguenti comandi:
CC; retval=$? | SS
Questo non funziona perche' la pipe usa l'output di "retval=$?" e
non di CC.
(CC; retval=$?) | SS
Adesso SS elabora l'output di CC, ma la variabile retval non e'
definita
al di fuori delle parentesi, perche' le parentesi lanciano una sub-
shell e
non so come esportare variabili da li'.
Ciao,
se per caso lavori con una versione recente di bash, c'e` la variabile
speciale
PIPESTATUS che potrebbe fare per te:
mercurius:~ chris$ ls | grep -i sdfsf | bc
mercurius:~ chris$ echo ${PIPESTATUS[0]}
0
mercurius:~ chris$ ls | grep -i sdfsf | bc
mercurius:~ chris$ echo ${PIPESTATUS[1]}
1
mercurius:~ chris$ ls | grep -i sdfsf | bc
mercurius:~ chris$ echo ${PIPESTATUS[2]}
0
Bye,
Chris.
PS: qui ho provato con
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)