Je veux savoir s'il existe une commande Bash intégrée qui imprime du texte sur stardr, comme la commande Editer --- - P> En fait, j'essaie de démontrer la redirection STDERR / STDOUT, et mon exemple ressemble à: p> pour la clarté, je veux garder le test. SH fichier aussi simple et propre que possible, cela signifie éviter l'opérateur echo code> imprime le texte sur stdout. Je ne veux pas utiliser Io-redirection temporaire. J'utilise une commande intégrée pour générer une erreur sur stardr telle que ls -asdf code> (LS: Option non reconnue '--astdf') mais je veux quelque chose de Néater. > code> dans le fichier. p> p>
6 Réponses :
Aucun intégré, vous pouvez utiliser:
function echo-err { echo "$@" >&2; }
En général, je pense qu'il n'y a pas vraiment une différence entre «Io-redirection temporaire» et la chose que vous voulez. STDERR est un descripteur de fichier comme n'importe quel autre, et tout intégré qui fait ce que vous voulez faire de la même chose à l'interne que vous faites en redirectant Echo comme Jurgen suggéré ci-dessus, à savoir, appelant écrit () sur elle. P>
Vous pouvez également faire un alias.
alias echoerr='echo >&2'
Cela ne fonctionnera pas pour ECHOER FOO 2> TEST-ERRTXT CODE> Étant donné que l'alias est élargi, les deux redirections sont configurées en même temps et le second ne savait pas que le premier a été Configurer encore. Les alias doivent être évités dans les scripts - utilisez des fonctions à la place.
Cependant ... p> Cela créera un petit programme qui fera écho à ses arguments. Vous pouvez l'utiliser comme ceci: p> echo quelque chose> & 2 code> est la bonne façon de faire ce que vous voulez. stardr code>: p>
Vous voudrez peut-être ajouter: si (argc> 1) fprintf (stardr, "\ n"); code> pour empêcher une nouvelle ligne errante de starr code> lorsqu'aucune entrée donnée.
@ DAVIDC.RANKIN: Je pense que c'est une bonne idée. Cependant, comme il se trouve, il génère une nouvelle ligne lorsque aucun argument n'est présent de la même manière que echo code> fait.
Oui, j'ai vu cela aussi, mais je pensais que si nous faisions quelque chose de coutume, nous pourrions le faire fonctionner une litière mieux :) J'ai testé les deux manières, et j'aime supprimer la nouvelle ligne en cas d'aucune entrée. D'autres peuvent aimer la ligne vide.
Juste un Sidenote: Si vous aimez démontrer Bash, vous devez utiliser Bash, pas SH:
bash --posix
Personne n'a mentionné cela, mais vous pouvez aussi faire ceci: p>
Il est peut-être plus lisible que echo un message d'erreur> / dev / stardr
code> p>
> & 2 code> mais je suppose que cela dépend de qui vous êtes. p>
Clairement, vous avez donné la réponse la plus simple et la plus lisible.