Go에서 `sudo` 명령을 실행할 때 `exec.Command()`가 종료 상태 1을 반환하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-27 13:45:10
원래의
608명이 탐색했습니다.

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

Go의 Os Exec Sudo 명령

배경

Go 및 고루틴을 탐색하는 동안 사용자는 명령을 실행하는 데 어려움을 겪을 수 있습니다. 형식:

sudo find /folder -type f | while read i; do sudo -S chmod 644 "$i"; done
로그인 후 복사

질문

  • 명령이 "종료 상태 1"을 반환하는 이유는 무엇입니까?
  • 더 자세한 정보를 얻는 방법 오류 message?

답변

  • 종료 상태 1: exec.Command() 함수는 지정된 프로그램을 실행합니다. 곧장. 그러나 주어진 명령에는 쉘 스크립트를 통해 연결된 여러 프로그램이 포함됩니다. 쉘 스크립트를 실행하려면 다음 구문을 사용하십시오.
cmd := exec.Command("/bin/sh", "-c", "sudo find ...")
로그인 후 복사
  • 자세한 오류 메시지: 터미널에서 직접 명령을 실행하여 더 자세한 오류 메시지를 확인하세요. 실패할 경우 터미널 출력에 오류 메시지가 있는지 확인하세요.

코드 수정

수정된 코드는 다음과 같습니다.

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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿