Path: csiph.com!3.us.feeder.erje.net!feeder.erje.net!news.linkpendium.com!news.linkpendium.com!panix!usenet.stanford.edu!not-for-mail From: Eric Blake Newsgroups: gnu.bash.bug Subject: Re: exiting noninteractive shells on 'shift 2' Date: Fri, 9 Nov 2018 10:22:54 -0600 Organization: Red Hat, Inc. Lines: 68 Approved: bug-bash@gnu.org Message-ID: References: <9ced783a-1c2b-f2c8-2287-fc0f6b967fa8@redhat.com> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: usenet.stanford.edu 1541780587 13670 208.118.235.17 (9 Nov 2018 16:23:07 GMT) X-Complaints-To: action@cs.stanford.edu To: chet.ramey@case.edu, bug-bash Envelope-to: bug-bash@gnu.org User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0 In-Reply-To: Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Fri, 09 Nov 2018 16:22:55 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com gnu.bash.bug:14786 On 11/9/18 8:52 AM, Chet Ramey wrote: > On 11/9/18 9:47 AM, Eric Blake wrote: > >> Well, there's STILL a conformance issue - the standard requires that unless >> documented otherwise, any time a command line tool exits with non-zero >> status, that it outputs a message to stderr explaining the error. > > Where? > http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#shift "STDERR The standard error shall be used only for diagnostic messages." "CONSEQUENCES OF ERRORS Default." http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html 1.4 Utility Description Defaults: STDERR "Default Behavior: When this section is listed as "The standard error shall be used only for diagnostic messages.", it means that, unless otherwise stated, the diagnostic messages shall be sent to the standard error only when the exit status indicates that an error occurred and the utility is used as described by this volume of POSIX.1-2017." CONSEQUENCES OF ERRORS "The following shall apply to each utility, unless otherwise stated: If the requested action cannot be performed on an operand representing a file, directory, user, process, and so on, the utility shall issue a diagnostic message to standard error and continue processing the next operand in sequence, but the final exit status shall be returned as non-zero. For a utility that recursively traverses a file hierarchy (such as find or chown -R), if the requested action cannot be performed on a file or directory encountered in the hierarchy, the utility shall issue a diagnostic message to standard error and continue processing the remaining files in the hierarchy, but the final exit status shall be returned as non-zero. If the requested action characterized by an option or option-argument cannot be performed, the utility shall issue a diagnostic message to standard error and the exit status returned shall be non-zero. When an unrecoverable error condition is encountered, the utility shall exit with a non-zero exit status. A diagnostic message shall be written to standard error whenever an error condition occurs." Since 'shift 2' when $# is 1 is an error, and results in non-zero status, it should print a diagnostic to stderr. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org