Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: new user questions and issues
- X-seq: zsh-users 20192
- From: Kannan Varadhan <kvaradhan3@xxxxxxxxx>
- To: Eric Cook <llua@xxxxxxx>
- Subject: Re: new user questions and issues
- Date: Thu, 7 May 2015 14:46:11 -0700
- Cc: zsh-users@xxxxxxx
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=dVGouDE3VfHh/2TZlU/WM0DzGarqTAU/y/v511WHQVQ=; b=qVEi+/uRWAcC6KhHJmeykrvycThHRGPbuzx9MBoSC+mcD1RZOHMW/ksYI7hUK3nw51 qi89JCS4IGCWoGUel/v3OTf0m9uXcj3vN4QYLn6yusUaIOlbsK6ao64hHLIjgAU+J+c4 h6DqCDzGodEVsX2N1aCYQKiDvDDE3R28+0hXRR1oOQy+VLc6xiAZPLqkWzJKkGv4ticI 58pYoPHFUgiWHL38C1jlFRaY6TFYLGvjtq5lN6rK4gFaoVW1+ri8TWJ/ma5bRnLj5Uv+ 4nEXwW/SGAb46R8Ow2080bhtcpTiJPwpXDG1D+QQprDo2uVcDwPppcZSciccnN2uwKq0 egGw==
- In-reply-to: <554A7E95.7000306@gmx.com>
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
- References: <67F1153E-5D3C-4D29-BDD0-1BB9C71FF55A@gmail.com> <554A7E95.7000306@gmx.com>
Thank you Eric.
I had worked out other ways of achieving #1, just wanted to learn if there was a good way to do it.
The others, I get.
Thanks,
Kannan
> On May 6, 2015, at 1:50 PM, Eric Cook <llua@xxxxxxx> wrote:
>
> 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.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author