这可能是一个简单的问题。在 Linux 机器上工作,我正在尝试从go
程序。我有一个服务器正在监听请求。但这行代码给我带来了问题。
cmd := exec.Command("echo -n 'hello' | nc localhost 3333")
我的其余代码正确运行命令......
然而,它只是将其视为与其余部分是它回显的字符串的一部分。我想将回声传送到nc
将消息发送到服务器。
我尝试过重新排列它,例如以这种方式:
cmd := exec.Command("echo", "-n", "'hello' | nc localhost 3333")
但它们产生相同的结果,或者错误:
executable file not found $PATH
如何从 go 脚本以这种方式一起执行 echo 和像 nc 这样的管道命令。
|
, >
, <
, &
,...
,cd
,...
还有更多是 shell 内置函数,它们被解释为shell
并相应执行。
所以你需要打电话shell
,并执行你的命令-c
旗帜,提及shell
将以下参数作为命令执行。
package main
import (
"os"
"os/exec"
)
func main() {
sh := os.Getenv("SHELL") //fetch default shell
//execute the needed command with `-c` flag
cmd := exec.Command(sh, "-c ", `echo -n 'hello' | grep "h"`)
cmd.Stdout = os.Stdout
cmd.Run()
}
我在这里使用的是grep
,因为我没有nc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)