zsh-users
 help / color / mirror / code / Atom feed
From: Eric Cook <llua@gmx.com>
To: zsh-users@zsh.org
Subject: Re: new user questions and issues
Date: Wed, 06 May 2015 16:50:29 -0400	[thread overview]
Message-ID: <554A7E95.7000306@gmx.com> (raw)
In-Reply-To: <67F1153E-5D3C-4D29-BDD0-1BB9C71FF55A@gmail.com>

I can snipe the easier to explain ones.
On 05/06/2015 01:37 PM, Kannan Varadhan wrote:

> Issue #1:  Programmatic Scripting, how to?
> 
> I would like to do the following:
> 
> for var in path infopath manpath cdpath ; do
>     typeset -agU $var
>     local capsvar
>     capsvar=$(echo $var | tr 'a-z' 'A-Z')
>     $var=( $(echo ${$capsvar} | sed 's/:/ /g') )
> done
> 
> But this does not work, because ${$capsvar}  gets me a zsh: bad substitution.
> Is there any way to achieve this in zsh?
> 
You can use the parameter expansion flag P. ''${(P)capsvar}''

With the exception of infopath, The arrays you are trying to define are
already created and tied to the uppercase scalar parameters.
Any change made to one is reflected in the other.

echo by default interprets c string escapes, you can disable that with
the -E option.

You could avoid the command substitution with the parameter expansion
flag U ''capsvar=${(U)var}'' to change the case of the value.

$var=(...) is also an error. ''set -A $var element1 element2 ...'' will
allow you to indirectly set arrays
> Issue #2.  Overridden local variables get echoed?
> 
> ~ 5% cat lib/zsh/test2                                                  9:55:52
> function test2 
>     print why is the previous value echoed when a local variable is 'overridden?'
It actually happens when you use typeset, local, etc. on a parameter
that is already defined. You can use the option TYPESET_SILENT option to
silence it.

from the typeset section of zshbuiltins(1):
If  the  shell  option  TYPESET_SILENT  is  not  set, for each remaining
name that refers to a parameter that is set, the name and value of the
parameter are printed in the form of an assignment.  Nothing is printed
for newly-created parameters, or when any attribute flags listed below
are given along with the name.  Using `+' instead of minus to introduce
an attribute turns it off.


Pretty sure #3 and #4 is due to how typeset creates a local parameters
when used in a function. So typeset -U PATH create a new parameter
without a value, with the -U attribute.


  reply	other threads:[~2015-05-06 20:50 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-06 17:37 Kannan Varadhan
2015-05-06 20:50 ` Eric Cook [this message]
2015-05-07 21:46   ` Kannan Varadhan
2015-05-07 21:54     ` ZyX
2015-05-11  5:02 ` Bart Schaefer
2015-05-11 17:43   ` Kannan Varadhan
2015-05-12  2:43     ` 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=554A7E95.7000306@gmx.com \
    --to=llua@gmx.com \
    --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).