亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有什么方法可以在 exec.Command 中執行多個命令嗎?

有什么方法可以在 exec.Command 中執行多個命令嗎?

Go
12345678_0001 2023-06-26 18:00:07
我正在嘗試使用 Go 執行一組命令exec.Command()。我嘗試使用 Docker Exec 分離 Gluster 對等點。fmt.Println("About to execute gluster peer detach")SystemdockerCommand := exec.Command("sh", "-c", "docker exec ", "9aa1124", " gluster peer detach ", "192.168.1.1", " force")var out bytes.Buffervar stderr bytes.BufferSystemdockerCommand.Stdout = &outSystemdockerCommand.Stderr = &stderrerr := SystemdockerCommand.Run()if err != nil {    fmt.Println(fmt.Sprint(err) + ": " + stderr.String())}fmt.Println("System Docker exec : " + out.String())我期待的結果是“沒有同行可以分離”。但退出狀態為 1:“docker exec”需要至少 2 個參數。
查看完整描述

3 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

由于您已經使用了sh -c,因此下一個參數應該是完整的命令或命令:


SystemdockerCommand := exec.Command("sh", "-c", "docker exec 9aa1124 gluster peer detach 192.168.1.1 force")

更一般地說,如下所示:


cmd := exec.Command("/bin/sh", "-c", "command1 param1; command2 param2; command3; ...")

err := cmd.Run()? ? ? ?

看這個例子:


sh := os.Getenv("SHELL") //fetch default shell

//execute the needed command with `-c` flag

cmd := exec.Command(sh, "-c ", `docker exec 9aa1124 ...`)

或者這個,首先將命令放入字符串中:


cmd := "cat /proc/cpuinfo | egrep '^model name' | uniq | awk '{print substr($0, index($0,$4))}'"

out, err := exec.Command("bash","-c",cmd).Output()

if err != nil {

? ? return fmt.Sprintf("Failed to execute command: %s", cmd)

}


查看完整回答
反對 回復 2023-06-26
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

多通道執行 kube-node-one -- bash -c "ls && ls -a"



查看完整回答
反對 回復 2023-06-26
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

有什么方法可以在 exec.Command 中執行多個命令

不。


查看完整回答
反對 回復 2023-06-26
  • 3 回答
  • 0 關注
  • 402 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號