Bash script variables question[Scanned]
Paul Howarth
paul at city-fan.org
Sun Aug 6 18:31:24 UTC 2006
On Sun, 2006-08-06 at 13:27 -0400, Tom Diehl wrote:
> 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.
It allows constructs like this:
$ var=$(foo $(bar))
Paul.
More information about the fedora-list
mailing list