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,轉載請注明原文鏈接:http://www.rzrgm.cn/lfdou/p/17412927.html

浙公網安備 33010602011771號