Anonymous | Login | 2023-06-04 11:57 UTC |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||
ID | Category | Severity | Type | Date Submitted | Last Update | ||
0000052 | [1003.1(2008)/Issue 7] Shell and Utilities | Objection | Error | 2009-06-25 13:19 | 2013-04-16 13:06 | ||
Reporter | geoffclare | View Status | public | ||||
Assigned To | ajosey | ||||||
Priority | normal | Resolution | Accepted As Marked | ||||
Status | Closed | ||||||
Name | Geoff Clare | ||||||
Organization | The Open Group | ||||||
User Reference | |||||||
Section | 2.14 | ||||||
Page Number | 2358 | ||||||
Line Number | 74545 | ||||||
Interp Status | Approved | ||||||
Final Accepted Text | Note: 0000227 | ||||||
Summary | 0000052: description of set -e does not match existing practice | ||||||
Description |
The description of set -e does not match existing practice in several respects, as discussed at length on the austin-group-l mailing list in threads beginning 2009-02-10 ("error handling in shell pipelines") and 2009-02-17 ("set -e description"). The new description of set -e proposed below is taken from the minutes of the March 12th teleconference, with a few minor changes: * shallification * changed "!" to "the ! reserved word" * changed "2.8.1" to "[xref to 2.8.1]" * changed "AND or OR list" to "AND-OR list" and the two major changes, related to pipelines and functions, discussed in replies to the minutes. I have also added the fix to 2.9.2 identified during the original discussion, and some application usage and rationale. |
||||||
Desired Action |
Replace the description of -e with: -e When this option is on, when any command fails (for any of the reasons listed in [xref to 2.8.1] or by returning an exit status greater than zero) the shell immediately shall exit with the following exceptions: 1) The failure of any individual command in a multi-command pipeline shall not cause the shell to exit. Only the failure of the pipeline itself shall be considered. 2) The -e setting shall be ignored when executing the compound list following the while, until, if, or elif reserved word, a pipeline beginning with the ! reserved word, or any command of an AND-OR list other than the last. 3) If the exit status of a compound command other than a subshell command was the result of a failure while -e was being ignored, then -e shall not apply to this command. This requirement applies to the shell environment and each subshell environment separately. For example, in set -e; (false; echo one) | cat; echo two the false command causes the subshell to exit without executing echo one; however, echo two is executed because the exit status of the pipeline (false; echo one) | cat is zero. In the APPLICATION USAGE for the set builtin utility at page 2360 line 74631, change "None" to: Application writers should avoid relying on set -e within functions. For example, in the following script: set -e start() { some_server echo some_server started successfully } start || echo >&2 some_server failed the -e setting is ignored within the function body (because the function is a command in an AND-OR list other than the last). Therefore if some_server fails, the function carries on to echo "server started successfully", and the exit status of the function is zero (which means "server failed" is not output). In the RATIONALE for the set builtin utility after page 2361 line 74660, add a new paragraph: The description of the -e option is intended to match the behavior of the 1988 version of the KornShell. At page 2319 line 73188 section 2.9.2, change: If the reserved word ! does not precede the pipeline, the to: If the pipeline does not begin with the ! reserved word, the |
||||||
Tags | tc1-2008 | ||||||
Attached Files | |||||||
|
![]() |
|||||||||||||
|
![]() |
|
(0000091) Don Cragun (manager) 2009-06-25 13:21 edited on: 2009-06-26 06:27 |
Originally reported by gwc:xxxxxxxxxxxxx Wed, 18 Mar 2009 09:24:16 +0000 with Subject: Defect in XCU 2.14 set Transcribed by Don Cragun from xcubug3.txt ERN 8 Submitter tag "gwc set -e" |
(0000092) Don Cragun (manager) 2009-06-25 13:30 |
Despite the Description saying the Action text is based on the minutes of the March 12th (2009) teleconference, the original Action text was overwritten in xcubug3.txt with the final action before being transcribed into Aardvark Mark III. Thus, the Accepted As Marked resolution is correct even though the final text is shown in the Desired Action field instead of in a Note. |
(0000227) ajosey (manager) 2009-09-17 15:08 edited on: 2009-09-17 15:10 |
Interpretation response ------------------------ The standard states the requirements for set -e and conforming implementations must conform to this. However, concerns have been raised about this which are being referred to the sponsor." Rationale: ------------- None. Notes to the Editor (not part of this interpretation): ------------------------------------------------------- Make the change suggested by the submitter |
(0001099) melkov (reporter) 2012-01-20 06:33 edited on: 2012-01-20 07:31 |
Regarding to function execution logic described here, I would like to ask respectable reviewers to discard this change in favor of 0000537 because: 1. This behavior only reflects a bug in original ksh implementation; 2. Unfamiliar programmers do not expect this behavior because it is against general logic; 3. It is hard to imagine a shell code that relies on this bug; 4. It is possible to give existing shell interpreters as much time to change the behavior as necessary. Correct logic can be off by default with corresponding -o option to turn it on. |
![]() |
|||
Date Modified | Username | Field | Change |
2009-06-25 13:19 | Don Cragun | New Issue | |
2009-06-25 13:19 | Don Cragun | Status | New => Under Review |
2009-06-25 13:19 | Don Cragun | Assigned To | => ajosey |
2009-06-25 13:19 | Don Cragun | Name | => Geoff Clare |
2009-06-25 13:19 | Don Cragun | Organization | => The Open Group |
2009-06-25 13:19 | Don Cragun | Section | => 2.14 |
2009-06-25 13:19 | Don Cragun | Page Number | => 2358 |
2009-06-25 13:19 | Don Cragun | Line Number | => 74545 |
2009-06-25 13:21 | Don Cragun | Note Added: 0000091 | |
2009-06-25 13:30 | Don Cragun | Note Added: 0000092 | |
2009-06-25 13:30 | Don Cragun | Reporter | Don Cragun => geoffclare |
2009-06-25 13:30 | Don Cragun | Status | Under Review => Interpretation Required |
2009-06-25 13:30 | Don Cragun | Resolution | Open => Accepted As Marked |
2009-06-25 16:38 | Don Cragun | Tag Attached: real bug in aardvark | |
2009-06-26 06:27 | Don Cragun | Note Edited: 0000091 | |
2009-07-30 16:09 | msbrown | Tag Detached: real bug in aardvark | |
2009-08-11 16:23 | Don Cragun | Interp Status | => Pending |
2009-09-17 15:08 | ajosey | Note Added: 0000227 | |
2009-09-17 15:10 | ajosey | Note Edited: 0000227 | |
2009-09-17 15:15 | ajosey | Final Accepted Text | => Note: 0000227 |
2009-09-17 15:41 | nick | Interp Status | Pending => Proposed |
2009-10-09 16:04 | ajosey | Interp Status | Proposed => Approved |
2010-09-20 09:05 | geoffclare | Tag Attached: tc1-2008 | |
2012-01-19 09:39 | geoffclare | Relationship added | related to 0000537 |
2012-01-20 06:33 | melkov | Note Added: 0001099 | |
2012-01-20 07:31 | melkov | Note Edited: 0001099 | |
2013-04-16 13:06 | ajosey | Status | Interpretation Required => Closed |
2013-06-20 21:35 | weeks | Relationship added | related to 0000715 |
Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group |