zsh-users
 help / color / mirror / code / Atom feed
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?






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