我目前正在尝试在Linux上的Golang中执行一个简单的echo命令。我的代码如下:
cmd = exec.Command("echo", "\"foo 0x50\"", ">", "test.txt")
_, err = cmd.Output()
if err != nil {
fmt.Println(err)
}
Run Code Online (Sandbox Code Playgroud)
但是test.txt并没有出现在我的文件夹中(即使在编译并运行代码之后)。这不是我第一次使用这种方法执行命令,而且我从没想过我会被echo命令所阻塞。
那么,如何解决此代码,以便在test.txt中包含“ foo 0x50”(带引号)?
您可以这样重定向标准输出:
// Remove the redirect from command
cmd := exec.Command("echo", "\"foo 0x50\"")
// Make test file
testFile, err := os.Create("test.txt")
if err != nil {
panic(err)
}
defer outfile.Close()
// Redirect the output here (this is the key part)
cmd.Stdout = testFile
err = cmd.Start(); if err != nil {
panic(err)
}
cmd.Wait()
Run Code Online (Sandbox Code Playgroud)