[Toybox] bash continues to confuse me.
Rob Landley
rob at landley.net
Fri Jun 19 04:53:32 PDT 2020
On 6/18/20 6:48 PM, Rob Landley wrote:
> On 6/18/20 1:46 PM, Chet Ramey wrote:
>> On 6/17/20 1:22 PM, Rob Landley wrote:
>>> Trying to figure out when spaces are and aren't allowed in ${blah} led to asking
>>> why echo ${!a* } is an error but ${!a@ } isn't (when there are no variables
>>> starting with a), and I eventually worked out that:
>>>
>>> $ X=PWD
>>> $ echo ${!X at Q}
>>> '/home/landley/toybox/clean'
>>>
>>> Is going on?
>>
>> It's variable transformation. It's introduced by `@' and uses single-letter
>> operators. I cribbed the idea from mksh and extended it. The syntax is kind
>> of loose because I'm still experimenting with it.
>
> I know what the @Q part does:
>
> $ chicken() { echo "${@@Q}"; }; chicken one two three
> 'one' 'two' 'three'
Well, I SORT of know what it does:
$ a='*'; xx() { echo "${!a at Q}";}; xx one two three
'one' 'two' 'three'
Shouldn't that be 'one two three'? (Why do a=@ and a='*' produce the same output
here?)
Rob
More information about the Toybox
mailing list