gpt4 book ai didi

bash - 带有此处文档重定向的 Makefile 配方

转载 作者:行者123 更新时间:2023-11-29 08:59:31 32 4
gpt4 key购买 nike

有谁知道如何在食谱上使用此处文档重定向?

test:
sh <<EOF
echo I Need This
echo To Work
ls
EOF

我找不到任何解决方案来尝试使用通常的反斜杠方法(基本上以单行命令结尾)。

理由:

我有一组多行配方,我想通过另一个命令(例如 sh、docker)进行代理。

onelinerecipe := echo l1
define twolinerecipe :=
echo l1
echo l2
endef
define threelinerecipe :=
echo l1
echo l2
echo l3
endef

# sh as proxy command and proof of concept
proxy := sh

test1:
$(proxy) <<EOF
$(onelinerecipe)
EOF

test2:
$(proxy) <<EOF
$(twolinerecipe)
EOF

test3:
$(proxy) <<EOF
$(threelinerecipe)
EOF

我希望避免的解决方案:将多行宏转换为单行。

define threelinerecipe :=
echo l1;
echo l2;
echo l3
endef

test3:
$(proxy) <<< "$(strip $(threelinerecipe))"

这行得通(我使用 gmake 4.0 和 bash 作为 make 的 shell)但它需要更改我的食谱而且我有很多。Strip 从宏中删除换行符,然后所有内容都写在一行中。

我的最终目标是:proxy := docker run ...

最佳答案

使用 .ONESHELL: 行Makefile 中的某处会将所有配方行发送到单个 shell 调用,您应该会发现原始 Makefile 可以按预期工作。

关于bash - 带有此处文档重定向的 Makefile 配方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35516379/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com