[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Recommended way to truncate a shell variable value in autoconf
From: |
Eric Blake |
Subject: |
Re: Recommended way to truncate a shell variable value in autoconf |
Date: |
Fri, 21 Feb 2014 15:23:31 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 |
On 02/21/2014 03:08 PM, Dale Visser wrote:
> I have a macro argument that I would like to place in a shell variable, but
> with a catch. I want to truncate it at the first space or comma. I have code
> that works for me (in Ubuntu), like this:
>
> my_var="$1"
> my_var=${my_var%%\ *}
> my_var=${my_var%%,*}
>
> However, I read at
> https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Shell-Substitutions.html#Shell-Substitutions
> that this construct "[does] not work with many traditional shells, e.g.,
> Solaris 10 /bin/sh."
What we NEED to do is finally bite the bullet to require XSI parameter
expansion of any shell that runs configure (we've already had snoop code
in the wild to prove that such a shell can be found, and no one has
submitted bug reports from any museum machine where the snoop has
triggered - even Solaris, with its ancient /bin/sh, has a better shell
that is always installed and easy enough to find). Then we could
simplify quite a bit of configure by actually using these substitutions.
>
> I am at a loss to figure out an acceptable "autoconf portable way" to
> accomplish this. I suspect some usage of m4_split
> (https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Text-processing-Macros.html#index-m4_005fsplit-1486)
> could be the answer, but haven't been able to figure out how to make it work
> correctly.
If you guarantee that your shell is capable (right now, that could be
done by using the undocumented _AS_DETECT_REQUIRED macro), then your way
is portable. Until then, the only portable fallback to this particular
problem is the use of 'expr' pattern matching and/or sed scripts. :(
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature