Pagina 1 di 1
[BASH] pipe senza new subshell
Inviato: ven 25 lug 2014, 17:37
da ZeroUno
ho uno script che esegue un comando in pipe; questo comando deve anche assegnare una variabile. Il problema è che il comando dopo pipe viene eseguito in una nuova subshell, il che significa che se lì assegno una variabile non me la ritrovo alla fine della esecuzione.
per esempio
C'è qualche soluzione?
Re: [BASH] pipe senza new subshell
Inviato: ven 25 lug 2014, 22:30
da targzeta
Secondo il man della bash:
Codice: Seleziona tutto
Each command in a pipeline is executed as a separate process (i.e., in a subshell).
e, secondo
questa guidaCodice: Seleziona tutto
Variables in a subshell are not visible outside the block of code in the subshell. They are not accessible to the parent process, to the shell that launched the subshell. These are, in effect, local variables.
sembra proprio che la tua domanda non abbia una risposta positiva

.
Dipende da quello che fai nella pipeline, però, potresti farti tornare il nuovo valore da assegnare alla variabile, aggiornandola:
Emanuele
Re: [BASH] pipe senza new subshell
Inviato: sab 26 lug 2014, 10:48
da ZeroUno
Quello che devo fare è ovviamente più complicato di un echo e in parte ci sono riuscito. Se infatti invece di pipe uso <<< il comando che prende l'output non viene eseguito in subshell.
Non ho un pc davanti ma qualcosa come
x=2 <<< $(echo)
dovrebbe funzionare.