BASH : Redirection $ echo >&2 'message' > fichier

Tout ce qui concerne la programmation.
Répondre
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Autre petit soucis de compréhension dans le script mkimage.sh

On y trouve ligne 33

echo >&2 "+ echo exit 101 > '$rootfsDir/usr/sbin/policy-rc.d'"

1ère vérification > test de la commande :

Code : Tout sélectionner

$ echo >&2 "+ echo exit 101 > '$rootfsDir/usr/sbin/policy-rc.d'"
+ echo exit 101 > '/usr/sbin/policy-rc.d'

[édité]

et on a :

$ echo "$?"
0

j'attendais la  stdout ->  + echo exit 101 > '/usr/sbin/policy-rc.d'

[/édité]

à 1ère vue rien de différent par rapport à :

Code : Tout sélectionner

$ echo "+ echo exit 101 > '$rootfsDir/usr/sbin/policy-rc.d'"
+ echo exit 101 > '/usr/sbin/policy-rc.d'

Alors quelle est la subtilité de cette redirection ?

J'ai trouvé et je comprends les significations suivantes :

> redirige la sortie standard stdout <=> fome implicite pour : 1>
& indique que ce qui vient après est un descripteur de fichier et non un fichier
2 N° du descripteur de fichier

donc >&2 redirige stdout vers stderr

mais je ne pige pas où est l'effet attendu :017:


Merci.
**Simple Utilisateur** -- Debian stable - XFCE
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour

La différence vient du flux par lequel le message est affiché
et dans le cas des lignes de commande comme celle ci-dessous :

Code : Tout sélectionner

echo >&2 "+ echo exit 101 > '$rootfsDir/usr/sbin/policy-rc.d'"
exécuté dans un script en mode debug, elle vont permettre de poser un repère
dans le flux de déboggage (qui sort par stderr <=> 2)
indiquant à quel moment la procédure va démarrer.
Répondre