bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: backquote peculiarities (was: Re: Combination of "eval set -- ..." a


From: Chet Ramey
Subject: Re: backquote peculiarities (was: Re: Combination of "eval set -- ..." and $() command substitution is slow)
Date: Tue, 16 Jul 2019 11:16:11 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.8.0

On 7/15/19 6:19 PM, astian wrote:

>> I doubt it makes any difference to the timing, which I think
>> Chet has already answered, but it is worth pointing out that these
>> two commands ...
>>
>>                      printf '%s\n' "`printf %s "$i"`"
>>                      printf '%s\n' "$(printf %s "$i")"
>>
>> which (I believe)) are supposed to be the same thing, using the
>> different (ancient, and modern) forms of command substitution aren't
>> actually the same.   In the first $i is unquoted, in the second it is
>> quoted.   Here, since its value is just a number and IFS isn't being
>> fiddled, there is not likely to be any effect, but if you really
>> want to make those two the same, the first needs to be written as
>>
>>                      printf '%s\n' "`printf %s \"$i\"`"
>>
>> Such are the joys of `` command substitutions (just avoid them).
>>
>> kre
> 
> Dear Robert Elz, I'm aware of several of its peculiarities and I typically do
> avoid them.  However, is it true that $i is unquoted in the first case?

POSIX makes it undefined behavior, and different shells do it differently.
Bash makes the $i quoted within the `` string, as you discovered.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]