我一直在嘗試運行命令并解析 golang 中的輸出。這是我正在嘗試做的一個示例:包主import ( "fmt" "os/exec")func main() { out,err := exec.Command("ls -ltr").Output() if err != nil { fmt.Println("Error: %s", err) } fmt.Printf("%s",out)}現在,當我嘗試運行“ls -ltr”時,出現此錯誤:Error: %s exec: "ls -ltr": executable file not found in $PATH所以,基本上 go 是在 PATH 中尋找整個“ls -ltr”。它顯然不在那里。有什么辦法可以將標志傳遞給任何參數嗎?TIA。
1 回答

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
您可以通過向函數傳遞更多參數來向程序傳遞參數 - 它是可變參數:
out,err := exec.Command("ls","-ltr").Output()
https://golang.org/pkg/os/exec/#Command
這是您將在大多數語言中看到的 exec 樣式函數的一個非常常見的約定。另一種常見的模式是建造者。
有時,您需要傳遞的參數布局在編譯時是未知的(盡管向系統發送任意命令不是一個好主意 - 保持安全?。H绻獋鬟f未知數量的參數,可以使用具有一些特殊語法的數組:
// Populate myArguments however you like
myArguments := []string{"bar","baz"}
// Pass myArguments with "..." to use variadic behaviour
out,err := exec.Command("foo", myArguments...).Output()
- 1 回答
- 0 關注
- 200 瀏覽
添加回答
舉報
0/150
提交
取消