首頁  >  文章  >  後端開發  >  為什麼在 Go 中執行 `sudo` 指令時 `exec.Command()` 回傳退出狀態 1?

為什麼在 Go 中執行 `sudo` 指令時 `exec.Command()` 回傳退出狀態 1?

Patricia Arquette
Patricia Arquette原創
2024-11-27 13:45:10604瀏覽

Why Does `exec.Command()` Return Exit Status 1 When Running `sudo` Commands in Go?

Go 中的 Os Exec Sudo 指令

背景

背景
sudo find /folder -type f | while read i; do sudo -S chmod 644 "$i"; done

在探索 Go 和 outine時,使用者執行指令時可能會遇到困難格式:

  • 問題
為什麼指令回傳「退出狀態1」?

如何取得更詳細的資訊錯誤訊息?

  • 回答
cmd := exec.Command("/bin/sh", "-c", "sudo find ...")
退出狀態1的原因:
    exec.Command()函數執行指定的程式直接地。但是,給定的命令涉及透過 shell 腳本連接的多個程式。要執行 shell 腳本,請使用以下語法:

詳細錯誤訊息: 透過直接在終端機中執行命令來取得更詳細的錯誤訊息。如果失敗,請檢查終端輸出中是否有任何錯誤訊息。

程式碼修改
package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("/bin/sh", "-c", "sudo find /folder -type f | while read i; do sudo -S chmod 644 \"\"; done")
    out, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Printf("Error: %s\nOutput: %s", err, out)
    }
}
以下是修改後的程式碼:

以上是為什麼在 Go 中執行 `sudo` 指令時 `exec.Command()` 回傳退出狀態 1?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn