Question

Je crée un script qui gère un ensemble de données prédéfini et le sort dans un fichier. Je souhaite faire apparaître un avertissement lorsqu'une donnée (qui est toujours "régulière" dans chaque ensemble auquel j'ai eu accès) est différente, indiquant que cette valeur n'est pas gérée (car je ne sais pas en quoi cela affecte les données) . Dois-je envoyer cet avertissement à stderr ou à stdout?

Était-ce utile?

La solution

Si je sauvegardais la sortie de ce script (c'est-à-dire uniquement la sortie standard) afin de pouvoir la traiter ultérieurement, cet avertissement interférerait-il avec la façon dont la sortie est analysée? De plus, si la sortie est acheminée vers un autre processus, l'avertissement devrait apparaître sur le terminal, afin que l'utilisateur le voie immédiatement.

Pour ces raisons, en général, vous envoyez des avertissements à stderr.

Autres conseils

L'avertissement doit aller à stderr.

Outre les points présentés par d'autres utilisateurs (générant des erreurs d'analyse pour les processus en aval et masquant l'erreur de l'utilisateur sur la console), il existe un problème de flexibilité.

Si l'utilisateur ne veut pas que l'avertissement de stderr aille dans un processus en aval qui analyse stdout, il n'a rien de spécial à faire.

your_script | downstream_process

Si l'utilisateur souhaite que l'avertissement de stderr aboutisse à un processus en aval qui analysera stdout et stderr, il peut utiliser 2 > & amp; 1 pour rediriger stderr vers stdout.

your_script 2>&1 | downstream_process

Si vous exportez les avertissements et toutes les données normales vers stdout, l'utilisateur ne dispose d'aucun moyen efficace pour séparer les avertissements des données sans tout analyser. Ainsi, l'envoi des avertissements à stderr donne également à votre script plus de flexibilité.

La vraie question est la suivante: si quelqu'un redirige la sortie de votre script vers un fichier, voulez-vous que l'avertissement soit placé dans le fichier ou dirigé vers l'utilisateur?

Si vous vous attendez à ce que l'utilisateur réagisse suite à l'avertissement, il devrait aller à STDERR. Si un script en aval est susceptible d'être déclenché par l'avertissement, il doit aller à STDERR.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top