go语言执行linux命令之“cd”操作之误会
最近因工作需要学了shell脚本,又刚好对go语言感兴趣,于是决定尝试一下用golang来操作linux,话不多说先直接上代码
import (
"bytes"
"fmt"
"log"
"os/exec"
)
func main() {
ExecCommand("go", "run", "hello.go")
//ExecCommand("touch", "/home/readme.md")
}
func ExecCommand(name string, args ...string) {
cmd := exec.Command(name, args...) // 拼接参数与命令
var stdout bytes.Buffer
var stderr bytes.Buffer
var err error
cmd.Stdout = &stdout
cmd.Stderr = &stderr
if err = cmd.Run(); err != nil {
log.Println(err)
}
fmt.Print(stdout.String())
fmt.Print(stderr.String())
}
这个简单的例子引发的我的思考,首先我尝试使用cd命令,但是很遗憾,
exec: “cd”: executable file not found in $PATH 你会得到这样的结果。
注:如果在命令中不指定路径,默认是在当前路径中执行命令。如果想要在其他路径下执行命令,最好使用绝对路径。我没有实现能做到直接cd到某路径下。。。。
和java对比
其他人的实现
如有侵权,请联系我删除
本文来自博客园,作者:doufei,转载请注明原文链接:https://www.cnblogs.com/lfdou/p/17412927.html