Bash script variables question[Scanned]

Tom Diehl tdiehl at rogueind.com
Sun Aug 6 17:27:43 UTC 2006


On Sun, 6 Aug 2006, Steven W. Orr wrote:

> On Sunday, Aug 6th 2006 at 22:05 +1000, quoth Cameron Simpson:
>
> =>On 06Aug2006 12:44, Chris Bradford <chrisbradford at cambridge-news.co.uk> wrote:
> =>| I changed
> =>|
> =>| ctime=/bin/date
> =>| compname=hostname
> =>|
> =>| to:
> =>|
> =>| ctime="$(date)"
> =>| compname="$(hostname)"
> =>
> =>BTW, you don't need the quotes. The assignment is parsed before the
> =>values arrive. Eg, this works:
> =>
> =>	x='a b c'
> =>	y=$x
> =>
> =>Also, just for other scripts, this:
> =>
> =>	foo=`command`
> =>
> =>is more portable than
> =>
> =>	foo=$(command)
>
> Never use backquotes when the $( cmd ) is available. The backquotes are
> deprecated in bash and ksh and are only available in antique Bourne
> shells. In addition there are subtle differences in quoting between the
> two.

Any idea why the authors feel the need to break 20+ years of history? I fail to
see why foo=`command` is better or worse than foo=$(command). I only have 17+ 
years worth of sh, ksh, and bash scripts that use the foo=`command` construct.

Just to be clear I am not blaming anyone here for the change. I realize that
this type of thing comes from upstream. I am just trying to understand why this
type of thing is done.

Regards,

Tom
>
> As for not needing the quotes, ... QED ;-)
>
>




More information about the fedora-list mailing list