What I’m saying is, that if bash does recursively apply expansion
mechanisms on the identifiers until it can retrieve a number, 
it should do it symmetrically. That is,
it should remember what chain of expansion had been necessary for
a particular number to appear at the end of the expansion.

So instead of 
124 moo 123
The echo command should produce
bar moo 124

(The expansion chain here was foo->bar->moo->123)

> It's because it's not really indirection, rather the content of the variable 
> is evaluated:
No it is really indirection. Bash even has a special (and very limited) syntax 
for that.
Consider 
$ foo=bar; bar=moo
You can get the string „moo“ through foo by using
$ echo ${!foo}

$ echo ${!!foo} # or something else does not work, though...

> 
> 
> It prints "124 moo 123" no?
> 
> It's because it's not really indirection, rather the content of the variable 
> is evaluated:
> 
> $ foo=1+2;echo $((foo))
> 3
> 
> In the last case it evaluates the value of foo, 123, and then increment the 
> value of foo and foo becomes 124
> 

Reply via email to