Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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
Golang、exec和back-ticks shell命令_Go - Fatal编程技术网

Golang、exec和back-ticks shell命令

Golang、exec和back-ticks shell命令,go,Go,我试图将os.exec()与如下命令一起使用:value=`something`;echo美元价值 value=`something`; echo $value 但是在后面的记号似乎干扰了字符串的命令 如果我用了什么东西,它就会起作用 我如何使用背面的记号?我必须找到另一种方法来编写命令吗 谢谢,Go以一种您无法使用shell的方式执行这些命令,因为它创建了一个新的进程。 因此,您应该创建一个新的shell进程,例如: package main import ( "os" "o

我试图将os.exec()与如下命令一起使用:value=`something`;echo美元价值

value=`something`; echo $value 但是在后面的记号似乎干扰了字符串的命令

如果我用了什么东西,它就会起作用

我如何使用背面的记号?我必须找到另一种方法来编写命令吗


谢谢,Go以一种您无法使用shell的方式执行这些命令,因为它创建了一个新的进程。 因此,您应该创建一个新的shell进程,例如:

package main

import (
    "os"
    "os/exec"
)

func main() {
    cmd := exec.Command("sh", "-c", "value=`ls`; echo $value")
    cmd.Stdout = os.Stdout
    err := cmd.Run()
    if err != nil {
        panic(err)
    }

}
如果这不是你想要的,请告诉我

我发现我可以用$()来代替``但是嗯……实际上我的命令比这更复杂:
nginx=$(ps aux | grep-v grep | grep nginx | wc-l);破折号=$(ps aux | grep-v grep | grep破折号| wc-l);如果[$nginx-gt 0-a$dash-gt 0];然后回音OK;else回波误差;fi
package main

import (
    "os"
    "os/exec"
)

func main() {
    cmd := exec.Command("sh", "-c", "value=`ls`; echo $value")
    cmd.Stdout = os.Stdout
    err := cmd.Run()
    if err != nil {
        panic(err)
    }

}