Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Pedantic use of ':' "in place of a temporary variable." #123

Open
Boruch-Baum opened this issue Feb 20, 2022 · 1 comment
Open

Pedantic use of ':' "in place of a temporary variable." #123

Boruch-Baum opened this issue Feb 20, 2022 · 1 comment

Comments

@Boruch-Baum
Copy link

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?

@ghost
Copy link

ghost commented Feb 21, 2022

: 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.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant