Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式在Heroku中运行bash脚本文件_Bash_Heroku_Go - Fatal编程技术网

以编程方式在Heroku中运行bash脚本文件

以编程方式在Heroku中运行bash脚本文件,bash,heroku,go,Bash,Heroku,Go,我有一个用Go编写并部署在Heroku上的web应用程序。最近,我实现了一个新功能,需要运行bash脚本文件并检索其输出。我使用的命令是: out, err := exec.Command("bash", script_path, arg).Output() 其中script_path是脚本的绝对路径。(通过使用调用方文件路径动态构建)和arg是脚本的输入 此命令在我的本地计算机中运行良好,但在Heroku中不起作用: 18:51:40 http:panic service 10.238.8.

我有一个用Go编写并部署在Heroku上的web应用程序。最近,我实现了一个新功能,需要运行bash脚本文件并检索其输出。我使用的命令是:

out, err := exec.Command("bash", script_path, arg).Output()
其中script_path是脚本的绝对路径。(通过使用调用方文件路径动态构建)和arg是脚本的输入

此命令在我的本地计算机中运行良好,但在Heroku中不起作用:

18:51:40 http:panic service 10.238.8.204:17763:exit status 127

ps:如果我在“heroku run bash”上运行相同的命令,它就会工作


有什么想法吗?

shell返回代码
127
用于指定“未找到命令”

您可以通过这个小示例看到这种行为

$ nonesuch
-bash: nonesuch: command not found
$ echo $?
127
这类问题通常意味着您需要添加

 /full/path/to/myscriptdir
路径
环境变量,即

 export PATH="$PATH:/full/path/to/myscriptdir withSpaces" 
有几个地方可以做到这一点,但这取决于你的组织规则

要立即解决此问题,请将其添加到运行Heroku的用户ID的
$HOME/.profile
文件中,或者可能会添加一个特定于Heroku的配置文件。(我没有赫罗库的经验)

有趣的是,本文没有提到路径变量


正如您所发现的,您可以编辑代码以直接包含完整路径,即

out, err := exec.Command("/bin/bash", path.Join(".", "src", "ext", "dextenso.sh"), 

IHTH

您解决了问题吗?是的。它使用的是bash可执行文件的完整路径:out,err:=exec.Command(“/bin/bash”,script\u path,arg).Output(),好的,那么,我应该做点错事了!感谢您的反馈,并确认这是可能的!您的
script\u路径
是否看起来像
/app/path/to/script.sh
?这很烦人,但我无法让它工作,而当使用heroku run bash时它可以工作。是的:script\u path:=path.Join(“.”、“src”、“ext”、“dextenso.sh”)。嗨,你的回答帮助我找到了解决方案,但是那些使用path变量的步骤是不必要的。我只需要指定bash可执行文件和脚本的完整路径。如下所示:
out,err:=exec.Command(“/bin/bash”,path.Join(“.”,“src”,“ext”,“dextenso.sh”),arg).Output()
。你能编辑你的答案吗?这样我就可以把它标记为解决方案了?谢谢@马塞洛:嗨,好的,我已经做到了。我很高兴这有帮助!