Domanda

Sto realizzando uno script che gestisce un set di dati predefinito, che viene inviato a un file. Voglio far apparire un avviso quando un dato (che è sempre "normale" in ogni set a cui ho avuto accesso) è diverso affermando che questo valore non è gestito (poiché non so come influisce sui dati) . Devo inviare questo avviso a stderr o stdout?

È stato utile?

Soluzione

Se salvassi l'output di questo script (cioè solo stdout) in modo da poterlo elaborare in seguito, quell'avvertimento interferirebbe con il modo in cui viene analizzato l'output? Inoltre, se l'output viene reindirizzato a un altro processo, l'avviso dovrebbe comparire sul terminale, in modo che l'utente lo veda immediatamente.

Per questi motivi, in generale, hai inviato avvisi a stderr.

Altri suggerimenti

L'avvertimento dovrebbe andare a stderr.

Oltre ai punti presentati da altri (che causano errori di analisi per i processi a valle e nascondono l'errore dell'utente sulla console), esiste un problema di flessibilità.

Se l'utente non desidera che l'avviso di stderr passi a un processo a valle che sta analizzando stdout, non deve fare nulla di speciale.

your_script | downstream_process

Se l'utente desidera che l'avviso di stderr passi a un processo a valle che analizzerà stdout e stderr, l'utente può utilizzare 2 > & amp; 1 per reindirizzare stderr in stdout.

your_script 2>&1 | downstream_process

Se si emettono entrambi gli avvisi e tutti i dati normali su stdout, l'utente non ha un buon modo per separare gli avvisi dai dati senza analizzare tutto. Quindi l'invio degli avvisi a stderr offre anche maggiore flessibilità al tuo script.

La vera domanda è: se qualcuno dovesse reindirizzare l'output del tuo script su un file, vorresti che l'avviso fosse inserito nel file o diretto all'utente?

Se ti aspetti che l'utente esegua alcune azioni a seguito dell'avviso, dovrebbe andare su STDERR. Se è probabile che alcuni script a valle vengano attivati ??dall'avvertimento, dovrebbe andare su STDERR.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top