gpt4 book ai didi

bash - 使用 bash <(curl ...) 转义 Makefile 规则中的括号

转载 作者:行者123 更新时间:2023-12-02 00:35:04 25 4
gpt4 key购买 nike

我想运行臭名昭著的 bash <(curl SOME_URL) Makefile 中的组合,我正在努力转义括号。 Makefile 的相关摘录如下所示:

foo:
docker run $(IMAGE_NAME) bash <(curl SOME_URL) \
--some-param1 \
--some-param2

通过 make foo 运行上面的代码只产生:/bin/sh: 1: Syntax error: "(" unexpected

谁能告诉我如何正确地转义括号以便我可以执行上面的操作

最佳答案

原因是,您没有使用 bash壳。你的makefile不使用支持进程替换(bash)的 bourne again shell(<()),因此系统使用 /bin/sh 执行它.默认 /bin/sh bourne shell 被设计为仅以标准功能运行。

使用 SHELL := /bin/bash在你的Makefile制作bash默认情况下为所有食谱使用 shell,或者您可以为每个食谱定义它。

foo: SHELL := /bin/bash
foo:
docker run $(IMAGE_NAME) bash <(curl SOME_URL) \
--some-param1 \
--some-param2

来自 GNU make documentation: Choosing the Shell .引用它来显示实际的行

The program used as the shell is taken from the variable SHELL. If this variable is not set in your makefile, the program /bin/sh is used as the shell

关于bash - 使用 bash <(curl ...) 转义 Makefile 规则中的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50016974/

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