From: Ray Andrews <rayandrews@eastlink.ca>
To: zsh-users@zsh.org
Subject: Re: triviality regarding $# counts
Date: Sat, 13 Apr 2024 13:36:49 -0700 [thread overview]
Message-ID: <b04e20ed-0845-4552-8457-d5876e978811@eastlink.ca> (raw)
In-Reply-To: <CAH+w=7ayX6ZY0mbY+x88JPizOkYN+DvZ=uYTg8eA7WwmkgZYPQ@mail.gmail.com>
On 2024-04-13 12:45, Bart Schaefer wrote:
> On Sat, Apr 13, 2024 at 11:08 AM Ray Andrews <rayandrews@eastlink.ca> wrote:
>> But I'm still not happy with the dollars. I had thought that " $'...' " was grammatical but we have " ' ' " -- meaning an empty line
> There are three* forms of quoting:
Many thanks, it's a brief page of explanation like this that would
feature in my imaginary 'Idiot's Guide to Shells'. It's not the sort of
information you can go looking for when you don't know it because you
don't even know what you're looking for. It must be brought to your
attention.
> 1) "X" -- expand variable references and other substitutions in X, but
> do not split on $IFS **
> 2) 'X' -- do not do any expansions, X is literal
Those two I pretty much understand -- except IFS which I've learned not
to touch.
> 3) $'X' -- interpret \n \t \e etc., but everything else is literal, as
> is the final result
This is new to me. Never used it. Looks useful for strings.
> This is all explained in the manual section "Quoting". "typeset -p"
> will output either no quoting at all, or #2, or #3,
I remember chafing over that some years back.
> Note that because #3 is quoting, not substitution, it does not expand
> inside #1. Conversely, backticks `X` only look like quoting, they are
> actually substitution equivalent to $(X) except without nesting, so
> they do execute a command when appearing inside double quotes (#1).
Heavy.
> * Four if you count using a backslash to protect a single following character.
Right.
> ** $@ and $ary[@] and ${(@)ary} get special handling, their array-ness
> is preserved with each element quoted separately.
That needs pondering.
> Let's look at your "redline" function:
> ...
> So you probably should have written
>
> redline () { echo -e "$red$*$nrm" }
>
> because $* is the same as $@ except without that special
> interpretation inside double quotes.
So, compared to the previous expansion, how would '$*' expand there?
I'm unclear as to the practical difference.
Anyway .... when my typedef -p line showed those " ' ' " with no
dollar -- which seemed to me to forbid that " $'...' " grammar --
what I should read is that that element has nothing quoted ergo no
'controller' -- no expansion flag -- is needed. Yes? IOW the dollar
might have been put there, but it has no work to do so is simply
omitted. Logical. Do I have that right, for once?
next prev parent reply other threads:[~2024-04-13 20:37 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-11 0:56 Ray Andrews
2024-04-12 4:55 ` Lawrence Velázquez
2024-04-12 14:48 ` Ray Andrews
2024-04-12 19:09 ` Bart Schaefer
2024-04-13 1:13 ` Ray Andrews
2024-04-13 1:33 ` Mark J. Reed
2024-04-13 2:28 ` Ray Andrews
2024-04-13 3:25 ` Lawrence Velázquez
2024-04-13 14:37 ` Ray Andrews
2024-04-13 15:14 ` Ray Andrews
2024-04-13 17:19 ` Mark J. Reed
2024-04-13 17:27 ` Mark J. Reed
2024-04-13 18:08 ` Ray Andrews
2024-04-13 19:45 ` Bart Schaefer
2024-04-13 20:36 ` Ray Andrews [this message]
2024-04-13 21:01 ` Bart Schaefer
2024-04-14 0:28 ` Ray Andrews
2024-04-14 0:30 ` Lawrence Velázquez
2024-04-14 3:26 ` Ray Andrews
2024-04-14 3:49 ` Lawrence Velázquez
2024-04-14 4:57 ` Bart Schaefer
2024-04-14 13:24 ` Ray Andrews
2024-04-14 13:35 ` Roman Perepelitsa
2024-04-14 14:06 ` Ray Andrews
2024-04-14 14:15 ` Roman Perepelitsa
2024-04-14 14:53 ` Ray Andrews
2024-04-14 15:11 ` Mark J. Reed
2024-04-14 16:23 ` Ray Andrews
2024-04-14 14:06 ` Mark J. Reed
2024-04-14 14:47 ` Ray Andrews
2024-04-14 14:59 ` Mark J. Reed
2024-04-14 15:51 ` Bart Schaefer
2024-04-14 17:22 ` Ray Andrews
2024-04-14 17:42 ` Mark J. Reed
2024-04-14 18:24 ` Bart Schaefer
2024-04-14 22:00 ` Ray Andrews
2024-04-13 20:11 ` Mark J. Reed
2024-04-13 20:53 ` Bart Schaefer
2024-04-14 0:19 ` Ray Andrews
2024-04-13 1:35 ` Bart Schaefer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b04e20ed-0845-4552-8457-d5876e978811@eastlink.ca \
--to=rayandrews@eastlink.ca \
--cc=zsh-users@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).