On Fri, Apr 24, 2026 at 10:56 AM Greg Wooledge <[email protected]> wrote:
>
> On Fri, Apr 24, 2026 at 08:07:36 -0600, Stan Marsh wrote:
> >
> > Although not incorrect, it looks like it could use some more words...
>
> So you already knew this before you asked.  What are you confused
> about?  What additional words do you think are needed?

On Fri, Apr 24, 2026 at 10:08 AM Stan Marsh <[email protected]> wrote:
>
> But what about in an interactive shell (as when we source it)?  In
> that case, I've noticed that while the shell itself does not exit (which is a 
> Good
> Thing!), the function (fiz) does exit (that is, the "OK" is not output).
>
> As far as I can tell, the fact that the function enclosing the :? exits, even 
> in an
> interactive shell, is not documented.

The current devel branch (commit 669b32f676) manual says this:
${parameter:?word}
Display Error if Null or Unset. If parameter is unset or null, or
unset if the colon is not present, the shell writes the expansion of
word (or a message to that effect if word is not present) to the
standard error and, if it is not interactive, exits with a non-zero
status. An interactive shell does not exit, but does not execute the
command associated with the expansion. Otherwise, the value of
parameter is substituted.

$ f1 () { f2; printf '%s\n' "f1 () continues" "f2 () exited with ${?}
exit code"; }
$ f2 () { ${1:?}; printf '%s\n' "f2 () continues"; }
$ f1
bash: 1: parameter null or not set
$ printf '%s\n' "${?}"
1
$ f2
bash: 1: parameter null or not set
$ printf '%s\n' "${?}"
1

So maybe the manual could be updated to
${parameter:?word}
Display Error if Null or Unset. If parameter is unset or null, or
unset if the colon is not present, the shell writes the expansion of
word (or a message to that effect if word is not present) to the
standard error and, if it is not interactive, exits with a non-zero
status. An interactive shell does not exit, but does not execute the
command associated with the expansion and any containing function
calls exit with a nonzero status. Otherwise, the value of parameter is
substituted.

Stan, I know you proposed discussing documentation flaws in help-bash,
but I'm not sure how much attention Chet pays to that list.

Reply via email to