Récupérer la valeur d'une variable d'un sous-shell
gnugo
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Rebonjour,
Suite à ma question de tout à l'heure (faire un traitement sur STDERR seul dans un pipe), je voudrais savoir s'il est possible de récupérer la valeur d'une variable d'un sous-shell ?
exemple :
ls | a=texte
echo $a
=> Rien (au lieu de "texte")
Il me faudrait récupérer dans mon shell courant la variable $a, par n'importe quel moyen mais sans passer par un fichier temporaire, et sans utiliser STDIN ou STDERR qui sont déjà utilisés .
Ou encore en reprenant l'excellent exemple de dubcek:
$ (echo aaa ; echo bbb>&2 ; echo ccc) 2> >(sed 's/^/stderr: /' >&2) | sed 's/^/stdout: /'
stdout: aaa
stdout: ccc
stderr: bbb
=> Ça devient compliqué: en plus de modifier STDERR, j'ai besoin d'en récupérer une partie modifiée dans mon shell courant.
Pour simplifier, disons que je cherche à récupérer le résultat de "sed 's/^/stderr: /'" dans mon shell courant (dans une variable par exemple) pour le réutiliser ensuite.
Y a t-il un moyen de faire cela?
Ouvrir un 3eme flux et l'enregistrer dans une variable? Mais ça semple compliqué dans un sous shell qui est lui même dans un pipe
Suite à ma question de tout à l'heure (faire un traitement sur STDERR seul dans un pipe), je voudrais savoir s'il est possible de récupérer la valeur d'une variable d'un sous-shell ?
exemple :
ls | a=texte
echo $a
=> Rien (au lieu de "texte")
Il me faudrait récupérer dans mon shell courant la variable $a, par n'importe quel moyen mais sans passer par un fichier temporaire, et sans utiliser STDIN ou STDERR qui sont déjà utilisés .
Ou encore en reprenant l'excellent exemple de dubcek:
$ (echo aaa ; echo bbb>&2 ; echo ccc) 2> >(sed 's/^/stderr: /' >&2) | sed 's/^/stdout: /'
stdout: aaa
stdout: ccc
stderr: bbb
=> Ça devient compliqué: en plus de modifier STDERR, j'ai besoin d'en récupérer une partie modifiée dans mon shell courant.
Pour simplifier, disons que je cherche à récupérer le résultat de "sed 's/^/stderr: /'" dans mon shell courant (dans une variable par exemple) pour le réutiliser ensuite.
Y a t-il un moyen de faire cela?
Ouvrir un 3eme flux et l'enregistrer dans une variable? Mais ça semple compliqué dans un sous shell qui est lui même dans un pipe
A voir également:
- Récupérer la valeur d'une variable d'un sous-shell
- Classic shell - Télécharger - Personnalisation
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment recuperer une video sur youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Récupérer mon compte facebook désactivé - Guide
C'est de récupérer le résultat d'un sous shell dans le shell courant.
Un peu comme quand on fait a=$(echo b)
Sauf que à ce sous-shell, je dois en plus lui passer quelquechose sur son entrée standard, et faire un traitement à part pour son STDOUT. Ce que je souhaite récupérer c'est son STDERR pour le traiter dans mon shell courant et le garder dans une variable utilisée par la suite.
on peut mettre plusieurs commandes dans $()
montre un exemple de ce que tu veux faire
Ce serait envisageable de faire quelque chose comme ça ?