exit "Bad filename"echo "Bad filename" >&2
exit 1exit can only be used to signal success or failure (0 =
success, 1-255 = failure). It can not be used to return string data, and
it can not be used to print error messages.
String data should be written stdout, before an exit 0
to exit with success.
Errors should instead be written to stderr, with an
exit 1 (or higher) to exit with failure:
if [ ! -f "$1" ]
then
echo "$1 is not a regular file" >&2
exit 1
fiNote in particular that exit -1 is equivalent to
exit 255, but that exit 1 is the more
canonical way of expressing the first possible error code.
None
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.