Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Sep 2020 19:11:08 +0200
From:      Polytropon <>
To:        FreeBSD Questions <>
Subject:   Error message output
Message-ID:  <>

Next in thread | Raw E-Mail | Index | Archive | Help
I have a general question. Is it still considered useful to
output error messages of a script to standard error?


	if [ something not okay ]; then
		echo "the error message" > /dev/stderr
		exit 1

While progress messages will per default go to standard output,
error messages should be printed to standard error. The reason:
If a program is silenced to > /dev/null, error messages will
still be visible (no "silent failing"); if a user wants to
explicitely mute all messages, > /dev/null 2>&1 has to be
specified for the redirection. The judgement if a message is
a regular progress message, an information about some slightly
problematic case, or a real fatal error depends on the programmer.
For example:

	echo "${FILE] processed, ${RECS} records counted."
	 -> standard output

	echo "${DIR} already checked, skipping."
	 -> standard output (non-fatal error"

	echo "${DEV} is read only, aborting."
	exit 1
	 -> standard error (fatal error)

	echo "Cannot start: Input filename missing."
	exit 1
	 -> standard error (fatal error)

At least that's what I've learned centuries ago.

Is that still valid?

Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...

Want to link to this message? Use this URL: <>