[bash] Ecrire sur la sortie d'erreur

Bonjour,

Dans un script bash, je cherche à écrire un message d’erreur sur la sortie d’erreur.
En langage c je fait comme ceci :fprintf(stderr, "Message d'erreur\n");En bash, je pense qu’il faut faire de cette façon :echo "Erreur" >&2Mais ça ne fonctionne pas :$ echo "Erreur" >&2 2> /dev/null ErreurQuelqu’un sait-il comment faire ?

Merci.

Un 2> semble suffisant :slightly_smiling:

$ ls inexistant /etc/X11/xserver/ 2> erreurs
/etc/X11/xserver/:
SecurityPolicy
$ cat erreurs
ls: cannot access inexistant: No such file or directory

Je n’ai pas compris tes lignes de codes (surtout la commande “francois”).

Mais je ne pense pas que 2> fasse ce que je veux. Ca ne fait que rediriger ailleurs des messages qui sont déjà dans le canal d’erreur. Ce qu’il me faut, c’est un moyen de mettre mes propres messages dans le canal d’erreur stderr.

En tout cas merci d’essayer :smt001

Oh je vois, il suffit de rediriger vers /dev/stderr:

$ (echo "Erreur" > /dev/stderr; echo "Pas erreur") 2> erreur 
Pas erreur
$ cat erreur
Erreur

francois /tmp >c’est ton invite de commande !! :smt005
Je croyais que c’était une fonction francois qui s’appliquait au dossier /tmp et dont la sortie était redirigée vers … d’autres commandes :smt017

En fait la solution que j’ai donnée au début était bonne, c’était le protocole de test qui n’était pas bon. Avec des parenthèses ça marche :

$ (echo "Erreur" >&2) 2> /dev/null $
Rien n’est affiché. Et là l’erreur s’affiche bien :

$ (echo "Erreur" >&2) 1> /dev/null Erreur $
Merci !
Je savait pas qu’on pouvait mettre des parenthèses, c’est POSIX ?

J’ai une invite à la msdos :blush: J’aurais dû la “banaliser” :slightly_smiling:

Ca marche avec dash, c’est donc censé être POSIX. Si MisterFreez passe par la il confirmera :slightly_smiling: