Makefile 如何在shell脚本中将分号(;)用作命令的一部分

Makefile 如何在shell脚本中将分号(;)用作命令的一部分,makefile,sh,Makefile,Sh,我正在尝试通过gnumake运行一个工具 $(cksumS19) : $(MY_TOOL_PATH)/toolname $(cksumS19) /CS14:@0x1FFFA;0x500000-0x70FFEF 分号;在上面的示例中,命令被视为命令分隔符,字符串(0x500000-0x70FFEF)的抛出命令未找到错误。 有人能帮我吗 我尝试将$1追加到上述命令,但脚本没有响应。 我已尝试在批处理脚本中运行此脚本,并已成功运行,但在生成过程中未调用此批处理文件。用引号括起参数:“/CS14:@0

我正在尝试通过gnumake运行一个工具

$(cksumS19) :
$(MY_TOOL_PATH)/toolname $(cksumS19) /CS14:@0x1FFFA;0x500000-0x70FFEF
分号;在上面的示例中,命令被视为命令分隔符,字符串(0x500000-0x70FFEF)的抛出命令未找到错误。 有人能帮我吗

我尝试将$1追加到上述命令,但脚本没有响应。
我已尝试在批处理脚本中运行此脚本,并已成功运行,但在生成过程中未调用此批处理文件。

用引号括起参数:“/CS14:@0x1ffa;0x500000-0x70FFEF”

将参数括起引号:“/CS14:@0x1ffa;0x500000-0x70FFEF”不,添加引号无效。Make根本不运行此目标,只是移动到下一个目标。是否确实要使用子shell
$()
?尤其是
MY\u TOOL\u PATH
对我来说就像一个变量,所以你应该使用
“$MY\u TOOL\u PATH”
。第一个
$(cksumS19)
应该是
cksumS19
@MaximSagaydachny:Update:使用双引号有效!我之前犯了一个新手错误,从源文件夹中保留最后生成的cksumS19文件,使gnumake.exe无法运行更改后的脚本。在我删除并使用双引号运行之后,它工作了。谢谢。实际上这与makefile无关,都是关于shell的。真正的问题是,如何逃脱
来自shell。这肯定是一个
bash
问题(或者无论如何是
sh
问题)。仅仅因为它在Windows上并不意味着它与POSIX外壳无关:在Windows上运行POSIX外壳有很多方法(包括被make调用)。