加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 带有here-document重定向的Makefile配方

发布时间:2020-12-16 01:36:33 所属栏目:安全 来源:网络整理
导读:有谁知道如何在食谱上使用here-document重定向? test: sh EOF echo I Need This echo To Work ls EOF 我找不到任何解决方案尝试通常的反斜杠方法(基本上以一行中的命令结束). 理由: 我有一组多行配方,我想通过另一个命令代理(例如,sh,docker). onelinereci
有谁知道如何在食谱上使用here-document重定向?
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从宏中移除换行符,然后所有内容都写在一行中.

我的最终目标是:代理:= docker run …

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读