Robert Elz: > Date: Wed, 10 Jul 2019 17:21:00 +0000 > From: astian <ast...@e-nautia.com> > Message-ID: <bcd08f6c-1c13-0eb4-92b2-4e904b19a...@e-nautia.com> > > 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? Consider: i='foo bar' set -x printf '%s\n' "`printf '<%s>' "$i"`" printf '%s\n' "`printf '<%s>' \"$i\"`" printf '%s\n' "`printf '<%s>' $i`" Which outputs: ++ printf '<%s>' 'foo bar' + printf '%s\n' '<foo bar>' <foo bar> ++ printf '<%s>' 'foo bar' + printf '%s\n' '<foo bar>' <foo bar> ++ printf '<%s>' foo bar + printf '%s\n' '<foo><bar>' <foo><bar> Cheers.