为什么命令不在项目文件夹中执行?

时间:2018-01-16 12:57:24

标签: go cron sh

我正在尝试使用sh文件执行命令,如下所示:

#!/bin/bash  
echo "executing......................................"
wget -i http://example.com -O /dev/null

直接从我的桌面文件夹访问时,哪个版本正常运行。

但是当我将它与我的golang项目集成时,例如: 我创建了一个名为myProject/sh的文件夹并将文件粘贴到那里。

现在在我的另一个包中使用cron我正在尝试访问test.sh文件。

func RunCron() {
    c := cron.New()
    c.AddFunc("10 * * * * *", ExecuteFunction)
    c.Start()
}

func ExecuteFunction(){
    fmt.Println("test----------------")
    utils.ExecuteCommand("sh "+config.GetBasePath()+"sh/test.sh")
}

现在输出类似

的内容
test----------------
Result: executing......................................

exit status 4: --2018-01-16 18:25:10--  http://example.com
Resolving http://example.com)... 1.1.1.1
Connecting to example.com (example.com)|2.2.2.2|:8080... failed: Connection refused.
No URLs found in example.com.

我无法弄清楚为什么相同的代码在我的桌面文件夹中运行良好但在我的项目文件夹中停止执行。你能告诉我,我做错了吗,你能节省我的时间吗?

谢谢!

1 个答案:

答案 0 :(得分:-1)

您是否考虑过使用"os/exec"

cmd := exec.Command("/bin/sh", test.sh)

编辑:a'对,我当时没有消化,我自己测试一下。

func main() {
        cmd := exec.Command("/bin/sh", "test.sh")
        out, err := cmd.CombinedOutput()
        if err != nil {
                log.Fatalf("cmd.Run() failed with %s\n", err)
        }
        fmt.Printf("output is :\n%s\n", string(out)) }