snippet of configure script - explain please

Malcolm Kay malcolm.kay at internode.on.net
Thu Jul 10 16:03:49 UTC 2008


On Fri, 11 Jul 2008 12:34 am, Mel wrote:
> On Thursday 10 July 2008 16:48:42 Malcolm Kay wrote:
> > On Thu, 10 Jul 2008 09:45 pm, Mel wrote:
> > > On Thursday 10 July 2008 06:24:46 Malcolm Kay wrote:
> > > > >    9255 if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" =
> > > > > set"; }; then
> > > >
> > > > I find this line somewhat strange as I've not been able
> > > > to find documentation for the expansion of ${parameter+set} under the
> > > > Bourne shell. (nor bash, nor ksh)
> > > > *****************************************************
> > > > Presumably someone out there knows where to find it?
> > > > *****************************************************
> > >
> > > It's shorthand for ${paramter:+set}, so if unset, you get "", otherwise
> > > you get "set":
> > > $ echo ${foo+set}
> > >
> > > $ echo ${HOME+set}
> > > set
> >
> > So it appears; but is it stated anywhere that this shorthand is legitimate?
> > I find it quite frequently arising from the GNU configuring tools but
> > haven't found it elsewhere.
> >
> > Is it a deliberate shorthand or just a consequence of the way sh and bash
> > happen to have been programmed? In other words is it a safe shorthand?
> >
> > Anyway thanks for the clarification,
> 
> Hmm, I'm not sure if the colon syntax came first.

Looks like your supposition is correct. I dug out an old DEC Ultrix manual 
which ducuments an 'sh' shell and a 'sh5' shell the 'sh' being the "normal" 
bsd version of the Bourne shell and 'sh5' being a compatibility version 
for system V scripts. The former (bsd version) does not use the ':' in 
parameter substitutions. But the system V version does.

> Autotools claims to create 
> portable shell code, though they 
> also claim to make software developer's 
> lives easier.


Malcolm


More information about the freebsd-questions mailing list