[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem in configure

From: Christian Franke
Subject: Re: Problem in configure
Date: Mon, 13 Oct 2008 09:38:47 +0200

Clemens Helfmeier wrote:
> This is a shell thing. It just ensures that the evaluation does not
> result in if test = xno; then
> (in case the variable is empty) and thus throw an error. with "x" it
> its like this for an empty variable
> if test x = xno; then
> which would work fine for shells.

BTW: This is not necessary if the expanded argument is quoted like in
the original example.

Instead of
  test "x$foo" = "xno"
it is OK to use:
  test "$foo" = "no"
  test "$foo" = no
which is IMO more easy to read. For an unset/empty variable, this
expands to
  test "" = no
which does not throw an error.

The leading 'x' was probably necessary for very ancient shells with
broken evaluation of quoted empty argument.

Even using the 'x' to avoid quoting is dangerous. It works for empty
variables, but throws an error if the variable contains spaces, e.g:
  foo="one two"
  test x$foo = xno
  test xone two = xno
  bash: test: too many arguments


reply via email to

[Prev in Thread] Current Thread [Next in Thread]