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 >