“找不到命令”将参数从 Makefile 传递到 shell 脚本

“找不到命令”将参数从 Makefile 传递到 shell 脚本

我有一个info.properties文件,其中包含此MY_NAME属性,并且我可以在我的Makefile.我已经尝试过,但无法直接在myScript.sh文件上使用该属性。

所以我试图将该属性作为参数传递给myScript.sh.我正在这样做:

在生成文件上:

my_stage:
    chmod 777 myScript.sh && ./myScript.sh $(MY_NAME)

在 myScript.sh 上我有这个:

#!/bin/bash -e
source .build/utils.sh

MY_NAME=$1
echo "MY_NAME=${MY_NAME}"

但我总是收到这个错误:

chmod 777 myScript.sh && ./myScript.sh My-name-Mariana
.build/utils.bash: line 596: My-name-Mariana: command not found
make: *** [test] Error 127

我该如何解决这个问题?

更新:

我知道.build/utils.bash正在尝试执行我的参数,我可以在错误中看到这一点。但我无法更改该文件,因为我没有它,因为它不是我的代码项目的一部分。

答案1

在脚本的第 596 行(左右),.build/utils.bash您尝试将其My-name-Mariana作为命令调用。无论是作为文字还是作为$1.它不存在,因此执行立即失败(由于-e上的标志bash)。

.build/utils.bash: line 596: My-name-Mariana: command not found

解决方案是修复代码。您尚未在此处提供,因此我们无法提供具体建议,但我相信如果您使用相关上下文更新您的问题,有人会很乐意这样做。

答案2

既然你的脚本可以source .build/utils.bash,你已经证明你实际上阅读。例如,less .build/utils.bash在包含 Makefile 的目录中尝试。

要修复实际问题而不修改.build/utils.bash,您可以尝试将 的内容分配$1MY_NAME变量中,然后使用shift命令将其从$1-source .build/utils.sh

但随后utils.bash接收$1为空字符串,这可能会导致它失败或执行不同的操作 - 如果不阅读utils.bash或一些有关它的文档,就不可能知道它期望什么。

相关内容