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

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

Patricia Arquette
發布: 2024-11-27 13:45:10
原創
660 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板