Rumah > pembangunan bahagian belakang > Golang > Mengapakah `exec.Command()` Mengembalikan Status Keluar 1 Apabila Menjalankan Perintah `sudo` dalam Go?

Mengapakah `exec.Command()` Mengembalikan Status Keluar 1 Apabila Menjalankan Perintah `sudo` dalam Go?

Patricia Arquette
Lepaskan: 2024-11-27 13:45:10
asal
673 orang telah melayarinya

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

Os Exec Sudo Command in Go

Latar Belakang

Semasa meneroka Go dan goroutine, pengguna mungkin menghadapi kesukaran melaksanakan arahan dengan format:

sudo find /folder -type f | while read i; do sudo -S chmod 644 "$i"; done
Salin selepas log masuk

Soalan

  • Mengapa arahan mengembalikan "keluar status 1"?
  • Bagaimana untuk mendapatkan yang lebih terperinci ralat mesej?

Jawapan

  • Punca Status Keluar 1: Fungsi exec.Command() melaksanakan program yang ditentukan secara langsung. Walau bagaimanapun, arahan yang diberikan melibatkan berbilang program yang disambungkan melalui skrip shell. Untuk melaksanakan skrip shell, gunakan sintaks berikut:
cmd := exec.Command("/bin/sh", "-c", "sudo find ...")
Salin selepas log masuk
  • Mesej Ralat Terperinci: Dapatkan mesej ralat yang lebih terperinci dengan menjalankan arahan terus dalam terminal. Jika gagal, semak sebarang mesej ralat dalam output terminal.

Pengubahsuaian Kod

Berikut ialah kod yang diubah suai:

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)
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah `exec.Command()` Mengembalikan Status Keluar 1 Apabila Menjalankan Perintah `sudo` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan