From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1425 invoked by alias); 29 Dec 2017 15:29:19 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: List-Unsubscribe: X-Seq: 23021 Received: (qmail 25256 invoked by uid 1010); 29 Dec 2017 15:29:19 -0000 X-Qmail-Scanner-Diagnostics: from mail-wm0-f51.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(74.125.82.51):SA:0(-0.9/5.0):. Processed in 1.659015 secs); 29 Dec 2017 15:29:19 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, FREEMAIL_REPLYTO,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_PASS,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.1 X-Envelope-From: linux.tech.guy@gmail.com X-Qmail-Scanner-Mime-Attachments: |testscript| X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:reply-to:from:date:message-id:subject:to; bh=LtQokIY761Ujrw5aNYCYBTiEYrvBeaycHAUilehtwuI=; b=Gof0SwtveQK2xXzqiA1zNqf0mxIqNjHNDJonNkjb+BYJSs7WH4lm16DEp2QkyEjwsl 6e55n7l1QVilJyduwuf0JYKWEC70TQQZn1mahn1NS7qxTyeSKPtsTnCdMMTMH1nT1t5E Poef724gljg2EPrX52EjoLEaPrYuUE4Z6dGd70371c111NFaSgmYTzG34dxG2X6ZRtuw i/GS3YJ61MaQcyNFPBe0zMhd58WrEamr36V3H7forjBm8kP88joreFBUettnqJJ6Ir7N rGOILgK5xjuV0xafJX7yQaqIITc+Ipnlf0M8Lb7GrpRJHO2a11HliurbzrfpZQ9BfIcD xoaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:from:date:message-id :subject:to; bh=LtQokIY761Ujrw5aNYCYBTiEYrvBeaycHAUilehtwuI=; b=kVFcTtKzX4ffNt8PTNR64KGjOWLaDkcNjnGrCr8/iIZA5bVY8WyAANLvEwI/120/D9 NzxlIhCK5Xaxpyvb5Hh6iat5NuNVjB6z2tq0x/2Ke1vHKgn787ECI++ae7ZnmlYpeS05 8+ooyZx8mRqlMvJRBCGg0NvRWA7e+8/ldnakVoeTlQGvk1+NigBOuhN52HfYbDDLvCtI 7h9obZiVSETAwZ+PnA19DqN+cgcs8x+zss+k3H5xhcDMkUqFNKX+gNAHBd4E4HAaVtna Nfj8Gn4Miyp4KKhaBz5KYRB7lqwhFDYwxJSSFjTPh44CwfUPdgjRVY1MQMO6eQEZ6lHn +swA== X-Gm-Message-State: AKGB3mJnYRF1v4D1UmjrWPH0XxmKb+7h+EEHmTGZA9xxQWR1d0tPq15U JbriwUyQYOevFKxtIDjzOtlG0IYhc58tsmFvHKs= X-Google-Smtp-Source: ACJfBovUbTA3CUvaZNCIqWuPUequNz3wnbv8sogTH2ODZ2+BWLMpoku2OT+d7/5ChqdlNR/W71LGG8hkxjXsDP26/+w= X-Received: by 10.80.183.38 with SMTP id g35mr44048453ede.231.1514561353538; Fri, 29 Dec 2017 07:29:13 -0800 (PST) MIME-Version: 1.0 Reply-To: linuxtechguy@gmail.com From: Jim Date: Fri, 29 Dec 2017 09:29:12 -0600 Message-ID: Subject: Mix and match parameter expansion flags and sub-scripting flags + quoting To: zsh Content-Type: multipart/mixed; boundary="94eb2c19504877fa6505617c4ba1" --94eb2c19504877fa6505617c4ba1 Content-Type: multipart/alternative; boundary="94eb2c19504877fa6205617c4b9f" --94eb2c19504877fa6205617c4b9f Content-Type: text/plain; charset="UTF-8" Hello, The intent is, using only "native zsh" tools, return the 'shell' as set in /etc/passwd for my own $USER without using any external utilities, gnu or otherwise. As in UNIX/Linux, zsh also has more then one way of doing the same thing. So as a training exercise I decided to use as many variants as I could to do the same thing. In the process I found that what I though would work, did not return the intended result. A number of attempts to fix, ended up producing, if nothing else, syntax errors. Some of my early trial and error, was not so successful, so I ended up testing quite a few variations of quoting, patterns, etc... in an attempt to determine what was going on. From the examples below you will see a couple of different patterns and subscript numbers and quoting around '${(f)$(
Hello,

The intent is, using only "n= ative zsh" tools, return the 'shell'
as set in /etc/passwd for my own $USER without u= sing any external
utili= ties, gnu or otherwise. As in UNIX/Linux, zsh also has more then
one way of doing the same thing. = So as a training exercise I decided
to use as many variants as I could to do the same thing. In th= e process
I found that = what I though would work, did not return the intended
result. A number of attempts to fix, ended u= p producing, if nothing
else, syntax errors.

Some of my earl= y trial and error, was not so successful, so I ended up
testing quite a few variations of quot= ing, patterns, etc... in an
attempt to determine what was going on. From the examples below you
will see a couple of diff= erent patterns and subscript numbers and
quoting around '${(f)$(<TestFile)}'. As a note= all three variations of
quoting of the fore mentioned code appear to return the same result.
<= /font>

TestFile=3D${${TestFile:= -$1}:-/etc/passwd} # set default file
=

The following works with or w/o the "external&qu= ot; quotes:
shell=3D&qu= ot;${${${(f)"$(<${TestFile})"}[(r)*:${UID}:${GID}:*]}[(ws/:/)7]}"
= as does:
shell=3D"= ${${(s/:/)"${(f)"$(<${TestFile})"}"[(r)${USER}:= *]}[-1]}"

The following ret= urns the correct result, only if there are no
"external" quotes(as shown):
shell=3D${${(s/:/)${(= M)"${(f)$(<<= wbr>${TestFile})}":#${USER}:*}}[-1]}

Would like to understand what is going on h= ere when "external"
quotes a present.

<= font face=3D"monospace,monospace">The following does not produce any errors= , but it also doesn't return
the intended output, with or w/o "external" quotes:
shell=3D"= ;${${(M)${(f)"$(<${TestFile})"}:#*:${UID}:${GID}:*}[(ws/:/)-1]}"

I thought this was the pro= per use of zsh tools, but since it isn't
returning the intended results, it mus= t be incorrect.=C2=A0 Any thoughts
on what I am doing wrong and or assumptions made?<= /span>

Also, depending= on patterns, subscripts, and in one known case, quoting;
= the results returned are al= l over the place. It could be a "blank line",
or the last field of the last= line of the passwd file, or the last field
of the first line + the first field o= f the second line, or the entire
line for $USER.

Note, if your USER entry is the last line of the pa= sswd file, you can
get the correct results, even though the code is wrong. Found this= the
hard = way.
<= br>
Any po= inters as to how to proceed to understand what is going on would
be appreciated. Than= ks in advance.

My distributions currently distributes ZSH_VERSION 5.3.1.

Sincerely,
<= div>
<= span style=3D"font-family:monospace,monospace">Jim

P.S. The attached script shows the var= iations I've tried.
=C2=A0=C2=A0 I don't expect anyone to fix any incorrect s= cripting,
= =C2=A0=C2=A0 that's on me.
--94eb2c19504877fa6205617c4b9f-- --94eb2c19504877fa6505617c4ba1 Content-Type: application/octet-stream; name=testscript Content-Disposition: attachment; filename=testscript Content-Transfer-Encoding: base64 X-Attachment-Id: f_jbs1mwp00 CiNUZXN0RmlsZT0keyR7VGVzdEZpbGU6LSQxfTotJHtIT01FfS90ZXN0L2ZpbGVzL3B3fQpUZXN0 RmlsZT0keyR7VGVzdEZpbGU6LSQxfTotL2V0Yy9wYXNzd2R9CgogIHByaW50ICJHcm91cCAxIHdp dGggb3V0ZXIgcXVvdGVzIgogIHNoZWxsPSIkeyR7JHsoZikiJCg8JHtUZXN0RmlsZX0pIn1bKHIp Kjoke1VJRH06JHtHSUR9OipdfVsod3MvOi8pN119IiA7IHByaW50ICR7c2hlbGx9CiAgc2hlbGw9 IiR7JHskeyhmKSIkKDwke1Rlc3RGaWxlfSkifVsocikqOiR7VUlEfToke0dJRH06Kl19Wyh3cy86 LyktMV19IiA7IHByaW50ICR7c2hlbGx9CiAgcHJpbnQgIkdyb3VwIDEgdy9vIG91dGVyIHF1b3Rl cyIKICBzaGVsbD0keyR7JHsoZikiJCg8JHtUZXN0RmlsZX0pIn1bKHIpKjoke1VJRH06JHtHSUR9 OipdfVsod3MvOi8pN119IDsgcHJpbnQgJHtzaGVsbH0KICBzaGVsbD0keyR7JHsoZikiJCg8JHtU ZXN0RmlsZX0pIn1bKHIpKjoke1VJRH06JHtHSUR9OipdfVsod3MvOi8pLTFdfSA7IHByaW50ICR7 c2hlbGx9CiAgcHJpbnQgIkdyb3VwIDIgd2l0aCBvdXRlciBxdW90ZXMiCiAgc2hlbGw9IiR7JHsk eyhmKSIkKDwke1Rlc3RGaWxlfSkifVsocikke1VTRVJ9OipdfVsod3MvOi8pN119IiA7IHByaW50 ICR7c2hlbGx9CiAgc2hlbGw9IiR7JHskeyhmKSIkKDwke1Rlc3RGaWxlfSkifVsocikke1VTRVJ9 OipdfVsod3MvOi8pLTFdfSIgOyBwcmludCAke3NoZWxsfQogIHByaW50ICJHcm91cCAyIHcvbyBv dXRlciBxdW90ZXMiCiAgc2hlbGw9JHskeyR7KGYpIiQoPCR7VGVzdEZpbGV9KSJ9WyhyKSR7VVNF Un06Kl19Wyh3cy86Lyk3XX0gOyBwcmludCAke3NoZWxsfQogIHNoZWxsPSR7JHskeyhmKSIkKDwk e1Rlc3RGaWxlfSkifVsocikke1VTRVJ9OipdfVsod3MvOi8pLTFdfSA7IHByaW50ICR7c2hlbGx9 CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgcHJpbnQgIkdyb3VwIDMgd2l0aCBvdXRlciBxdW90 ZXMiCiAgc2hlbGw9IiR7JHsocy86LykkeyhNKSR7KGYpIiQoPCR7VGVzdEZpbGV9KSJ9OiMqOiR7 VUlEfToke0dJRH06Kn19WzddfSIgOyBwcmludCAke3NoZWxsfQogIHNoZWxsPSIkeyR7KHMvOi8p JHsoTSkkeyhmKSIkKDwke1Rlc3RGaWxlfSkifTojKjoke1VJRH06JHtHSUR9Oip9fVstMV19IiA7 IHByaW50ICR7c2hlbGx9CiAgcHJpbnQgIkdyb3VwIDMgdy9vIG91dGVyIHF1b3RlcyIKICBzaGVs bD0keyR7KHMvOi8pJHsoTSkkeyhmKSIkKDwke1Rlc3RGaWxlfSkifTojKjoke1VJRH06JHtHSUR9 Oip9fVs3XX0gOyBwcmludCAke3NoZWxsfQogIHNoZWxsPSR7JHsocy86LykkeyhNKSR7KGYpIiQo PCR7VGVzdEZpbGV9KSJ9OiMqOiR7VUlEfToke0dJRH06Kn19Wy0xXX0gOyBwcmludCAke3NoZWxs fQogIHByaW50ICJHcm91cCA0IHdpdGggb3V0ZXIgcXVvdGVzIgogIHNoZWxsPSIkeyR7KHMvOi8p JHsoTSkkeyhmKSIkKDwke1Rlc3RGaWxlfSkifTojJHtVU0VSfToqfX1bN119IiA7IHByaW50ICR7 c2hlbGx9CiAgc2hlbGw9IiR7JHsocy86LykkeyhNKSR7KGYpIiQoPCR7VGVzdEZpbGV9KSJ9OiMk e1VTRVJ9Oip9fVstMV19IiA7IHByaW50ICR7c2hlbGx9CiAgcHJpbnQgIkdyb3VwIDQgdy9vIG91 dGVyIHF1b3RlcyIKICBzaGVsbD0keyR7KHMvOi8pJHsoTSkkeyhmKSIkKDwke1Rlc3RGaWxlfSki fTojJHtVU0VSfToqfX1bN119IDsgcHJpbnQgJHtzaGVsbH0KICBzaGVsbD0keyR7KHMvOi8pJHso TSkkeyhmKSIkKDwke1Rlc3RGaWxlfSkifTojJHtVU0VSfToqfX1bLTFdfSA7IHByaW50ICR7c2hl bGx9CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgcHJpbnQgIkdyb3VwIDUgd2l0aCBvdXRlciBx dW90ZXMiCiAgc2hlbGw9IiR7JHsoTSkkeyhmKSIkKDwke1Rlc3RGaWxlfSkifTojKjoke1VJRH06 JHtHSUR9Oip9Wyh3cy86Lyk3XX0iIDsgcHJpbnQgJHtzaGVsbH0KICBzaGVsbD0iJHskeyhNKSR7 KGYpIiQoPCR7VGVzdEZpbGV9KSJ9OiMqOiR7VUlEfToke0dJRH06Kn1bKHdzLzovKS0xXX0iIDsg cHJpbnQgJHtzaGVsbH0KICBwcmludCAiR3JvdXAgNSB3L28gb3V0ZXIgcXVvdGVzIgogIHNoZWxs PSR7JHsoTSkkeyhmKSIkKDwke1Rlc3RGaWxlfSkifTojKjoke1VJRH06JHtHSUR9Oip9Wyh3cy86 Lyk3XX0gOyBwcmludCAke3NoZWxsfQogIHNoZWxsPSR7JHsoTSkkeyhmKSIkKDwke1Rlc3RGaWxl fSkifTojKjoke1VJRH06JHtHSUR9Oip9Wyh3cy86LyktMV19IDsgcHJpbnQgJHtzaGVsbH0KICBw cmludCAiR3JvdXAgNiB3aXRoIG91dGVyIHF1b3RlcyIKICBzaGVsbD0iJHskeyhNKSR7KGYpIiQo PCR7VGVzdEZpbGV9KSJ9OiMke1VTRVJ9Oip9Wyh3cy86Lyk3XX0iIDsgcHJpbnQgJHtzaGVsbH0K ICBzaGVsbD0iJHskeyhNKSR7KGYpIiQoPCR7VGVzdEZpbGV9KSJ9OiMke1VTRVJ9Oip9Wyh3cy86 LyktMV19IiA7IHByaW50ICR7c2hlbGx9CiAgcHJpbnQgIkdyb3VwIDYgdy9vIG91dGVyIHF1b3Rl cyIKICBzaGVsbD0keyR7KE0pJHsoZikiJCg8JHtUZXN0RmlsZX0pIn06IyR7VVNFUn06Kn1bKHdz LzovKTddfSA7IHByaW50ICR7c2hlbGx9CiAgc2hlbGw9JHskeyhNKSR7KGYpIiQoPCR7VGVzdEZp bGV9KSJ9OiMke1VTRVJ9Oip9Wyh3cy86LyktMV19IDsgcHJpbnQgJHtzaGVsbH0KIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICBwcmludCAiR3JvdXAgNyB3aXRoIG91dGVyIHF1b3RlcyIKICBzaGVs bD0iJHskeyhzLzovKSR7KGYpIiQoPCR7VGVzdEZpbGV9KSJ9WyhyKSo6JHtVSUR9OiR7R0lEfToq XX1bN119IiA7IHByaW50ICR7c2hlbGx9CiAgc2hlbGw9IiR7JHsocy86LykkeyhmKSIkKDwke1Rl c3RGaWxlfSkifVsocikqOiR7VUlEfToke0dJRH06Kl19Wy0xXX0iIDsgcHJpbnQgJHtzaGVsbH0K ICBwcmludCAiR3JvdXAgNyB3L28gb3V0ZXIgcXVvdGVzIgogIHNoZWxsPSR7JHsocy86Lykkeyhm KSIkKDwke1Rlc3RGaWxlfSkifVsocikqOiR7VUlEfToke0dJRH06Kl19WzddfSA7IHByaW50ICR7 c2hlbGx9CiAgc2hlbGw9JHskeyhzLzovKSR7KGYpIiQoPCR7VGVzdEZpbGV9KSJ9WyhyKSo6JHtV SUR9OiR7R0lEfToqXX1bLTFdfSA7IHByaW50ICR7c2hlbGx9CiAgcHJpbnQgIkdyb3VwIDggd2l0 aCBvdXRlciBxdW90ZXMiCiAgc2hlbGw9IiR7JHsocy86LykkeyhmKSIkKDwke1Rlc3RGaWxlfSki fVsocikke1VTRVJ9OipdfVs3XX0iIDsgcHJpbnQgJHtzaGVsbH0KICBzaGVsbD0iJHskeyhzLzov KSR7KGYpIiQoPCR7VGVzdEZpbGV9KSJ9WyhyKSR7VVNFUn06Kl19Wy0xXX0iIDsgcHJpbnQgJHtz aGVsbH0KICBwcmludCAiR3JvdXAgOCB3L28gb3V0ZXIgcXVvdGVzIgogIHNoZWxsPSR7JHsocy86 LykkeyhmKSIkKDwke1Rlc3RGaWxlfSkifVsocikke1VTRVJ9OipdfVs3XX0gOyBwcmludCAke3No ZWxsfQogIHNoZWxsPSR7JHsocy86LykkeyhmKSIkKDwke1Rlc3RGaWxlfSkifVsocikke1VTRVJ9 OipdfVstMV19IDsgcHJpbnQgJHtzaGVsbH0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgcHJp bnQgIiIKICB1bnNldCBzaGVsbAoK --94eb2c19504877fa6505617c4ba1--