Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: EXEC peculiarities



> On Sun, Aug 15, 2004 at 01:24:56PM -0400, Jay Guerette wrote:
>> Ok. So in the following examples, would the 1st form; ${(s: :)EXEC}; be
>> preferred, since the documentation says using the 2nd form; ${=EXEC};
>> forces SH_WORD_SPLIT on; potentially leading to unexpected behavior
>> later?
>
> ${=VAR} only forces SH_WORD_SPLIT on for the duration of the variable's
> expansion, so it's a good way to go when you need to use it.
>
> However, I'd recommend just starting with an array in the first place,
> when possible:
>
> #!/bin/zsh
> EXEC=(/sbin/ifconfig eth0)
> exec $EXEC
>
> The nice thing about this idiom is that it preserves args that have
> spaces in them:
>
> #!/bin/zsh
> file1='this one.txt'
> EXEC=(/bin/ls $file1 'that one.txt')
> exec $EXEC
>
> If you put that in a string and split it, it would not preserve the
> multi-word args:
>
> #!/bin/zsh
> file1='this one.txt'
> EXEC="/bin/ls $file1 that\\ one.txt"
> exec ${=EXEC}
>
> That would try to list "this", "one.txt", "that\", and "one.txt" (just
> like bash would handle the string).

Ah. In my case, I'm pulling the target of 'exec' in from a variable, thus
the cause of this exercise. Subtleties noted. Many thanks!




Messages sorted by: Reverse Date, Date, Thread, Author