Bash : variables et redirections

Anne bash

Pour récupérer la sortie d’une commande dans une variable, on fait :

var=$(commande)

On peut récupérer aussi la sortie d’erreur (en plus de la sortie standard) en ajoutant :

var=$(commande 2>&1)

Si on redirige la sortie standard de la commande, on récupère juste la sortie d’erreur dans la variable :

var=$(commande 2>&1 > cmd.log)

On peut aussi simplement jeter la sortie de la commande :

var=$(commande 2>&1 > /dev/null)

Il est plus délicat de laisser passer la sortie standard de la commande en récupérant simplement la sortie d’erreur dans la variable :

exec 3>&1
var=$(commande 2>&1 1>&3)
exec 3>&- # on ferme le canal 3

Ce qui peut aussi s'écrire :

{ var=$(commande 2>&1 1>&3-) ;} 3>&1

On note que 1>&3- est équivalent à 1>&3 3>&-.

Mais sans la récupérer dans une variable, on peut faire des recherches dans la sortie d’erreur :

commande > fichier.log 2> >( grep recherche >&2)

Il faut bien penser à rediriger le résultat du grep, sans quoi, on ne verra rien !

Pour voir comment utiliser ces redirections pour récupérer le temps d’exécution d’un commande, voir cette note.

Documentation

Voir aussi :