Curious bash evaluation

inode0 inode0 at gmail.com
Mon Dec 27 18:00:55 UTC 2010


On Mon, Dec 27, 2010 at 11:30 AM, Rodolfo Alcazar Portillo
<nospaze at gmail.com> wrote:
> On Mon, 2010-12-27 at 10:46 -0600, inode0 wrote:
>> On Mon, Dec 27, 2010 at 10:05 AM, Rodolfo Alcazar Portillo
>> <nospaze at gmail.com> wrote:
>> > Hello. See this:
>> >
>> > # A="echo 'hi'"
>> >
>> > # echo $($A)
>> > 'hi'
>>
>> That seems rather convoluted. Are you sure you don't just want to
>> "eval $A" anyway?
>
> Very sure. Not "bash", nor "eval". Just simple command substitution.
> Another reason: it's shorter. Another reason: It must be understood, not
> just avoided in a micro$oft software fashion.

Ok. Quote removal is done at the very end of the expansion process and
only removes unquoted occurrences of \, ', and " that did not result
from an earlier expansion. Since the quotes in this case did occur in
an earlier expansion of the variable A they are left unchanged.

If you want them removed I don't think there is any way to remove them
without doing something like eval to trigger a second round of quote
removal.

John


More information about the users mailing list