Curious bash evaluation

Marvin Kosmal mkosmal at gmail.com
Mon Dec 27 16:13:44 UTC 2010


On 12/27/10, Rodolfo Alcazar Portillo <nospaze at gmail.com> wrote:
> Hello. See this:
>
> # A="echo 'hi'"
>
> # echo $($A)
> 'hi'
>
> # echo 'hi'
> hi
>
> Does anyone understand why does the first command
> evals the echo but echoes the simple quotes?
>
> Is there any dark shopt option which makes it run correctly?
>
> Thanks...
> ----------------------------------------------
> Rodolfo Alcazar Portillo - nospaze at gmail.com
> otbits.blogspot.com / counter.li.org: #367962
> ----------------------------------------------
> # unzip; strip; touch; finger; grep; mount; fsck; more; yes; fsck; fsck;
> fsck; umount; sleep
>
>

I will do the short explanation

This expression does what I call Double expansion
 echo $($A)

First it expands    echo HI

Then it does the echo which yields   HI

In your second command

 echo 'hi'

It just echos   hi .. like it should

Sorry, if this doesn't sound real elegant..    Someone will give a
better description

HTH
Marvin J. Kosmal

Disclaimer: This email is not intended to provide medical advice,
diagnosis or treatment. Views expressed here do not necessarily
reflect those of Farmer Marvin or any of the hens.


More information about the users mailing list