help-make
[Top][All Lists]
Advanced

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

Re: Can the exit status of the code block in @(...) be obtained from out


From: Hongyi Zhao
Subject: Re: Can the exit status of the code block in @(...) be obtained from outside the @() structure?
Date: Sat, 22 Jan 2022 09:28:06 +0800

On Sat, Jan 22, 2022 at 3:05 AM Paul Smith <psmith@gnu.org> wrote:
> [...]
> As mentioned before, the entire script must be contained in a single
> logical line if you want the same shell to interpret it all.  So you'll
> have to add "\" to combine all these into a single logical line:

Thank you for your above knowledgeable and thorough analysis. Got it.

>   define download_and_unpack
>     package='$(1)' ; \
>     package_URL='$(2)' ; \
>     package_directory='$(3)' ; \
>     package_code='$(4)' ; \
>     package_archive=../archive/`echo "$(package)" | sed 's/.*\///;s/.*=//'` ; 
> \
>     ( \
>     if ! gzip -t $(package_archive) > /dev/null 2>&1 ; then \

I tried with your above trick, but noticed that the variable
package_archive can be expanded correctly:

$ make -j44 w90
[...]
package='wannier90-3.1.0';
package_URL='https://codeload.github.com/wannier-developers/wannier90/tar.gz/v3.1.0';
package_directory='W90'; package_code='wannier90';
package_archive=../archive/`echo "" | sed 's/.*\///;s/.*=//'`;

As you can see, the following command:

package_archive=../archive/`echo "$(package)" | sed 's/.*\///;s/.*=//'`; \

will be passed as:

package_archive=../archive/`echo "" | sed 's/.*\///;s/.*=//'`;

As you can see, the expansion of "$(package)" has been lost. Based on
tries, it seems the following form fixes this problem:

package_archive=../archive/`echo "$$(package)" | sed 's/.*\///;s/.*=//'`; \

Regards,
HZ



reply via email to

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