Open Boruch-Baum opened 2 years ago
:
and $_
are POSIX. bash
has both legacy [
and new [[
, old let
and new $((
, preserving compatibility, there is no basis for panic.
:
did not change for over 43 years nor it'll change now, the behaviour matches sh
. The documentation said :
does not react to anything passed on, it works as the standard demands to do. Both features are documented and combining documented stuff together doesn't count as undocumented in my view.
Hi. I'm new to your project, and am starting at the beginning (no guarantee I'll continue)...
In your very first snippet, labeled "Trim leading and trailing white-space from string", you write: "The
:
built-in is used in place of a temporary variable."Is that really what's happening? AFACIT the
;
is a no-op built-in command, having nothing to to do with any variable. Your snippet seems to be using the $_ shell variable, which according to the man page "expands to the last argument the previous simple command executed in the foreground, after expansion."If I'm understanding the snippet correctly, the explanation should read something like "The
$_
shell variable is used in place of a temporary variable. It is updated as an undocumented side-effect of the:
null built-in.Also, since the side-effect that the snippets exploits seems at odds with the documentation for the
:
command ("null command: no effect; the command DOES NOTHING"), is there documentation supporting this use? What I mean is, are the bash developers committed to the continued existence of this behavior, or it just an undocumented serendipitous occurrence for an officially 'undefined' result that could change at any time without notice?