snippet of configure script - explain please
Matthew Seaman
m.seaman at infracaninophile.co.uk
Thu Jul 10 17:09:55 UTC 2008
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,
This syntax is certainly legitimate, and it is covered in the sh(1)
man page. However, the relevant section talks mostly about the related
form:
${parameter:+word}
which means 'evaluate to null unless ${parameter} is unset or null, otherwise evaluate to "word"'. Then there's a very small and easily
missed note to the effect:
"In the parameter expansions shown previously, use of the colon in the
format results in a test for a parameter that is unset or null; omission
of the colon results in a test for a parameter that is only unset."
So ${parameter+word} means 'evaluate to null unless ${parameter} is unset,
otherwise evaluate to "word"'
Cheers,
Matthew
--
Dr Matthew J Seaman MA, D.Phil. 7 Priory Courtyard
Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey Ramsgate
Kent, CT11 9PW
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 258 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20080710/512fdc09/signature.pgp
More information about the freebsd-questions
mailing list