이 시나리오에서는 파일에 콘텐츠를 추가하는 것과 유사한 시스템 명령을 실행하는 것을 목표로 합니다. 그러나 명령이 한 단어를 초과하면 프로그램에서 오류가 발생합니다.
문제 식별
초기 코드는 명령을 직접 실행하려고 시도하므로 명령과 명령을 구별하지 못합니다. 그 주장. 이는 명령이 여러 단어로 구성된 경우 문제가 됩니다.
해결책
이 문제를 해결하는 한 가지 방법은 제안된 솔루션에서 볼 수 있듯이 셸을 중개자로 활용하는 것입니다.
out, err := exec.Command("sh", "-c", cmd).Output()
-c 플래그는 셸에서 cmd를 명령으로 해석하도록 지시하여 프로그램이 명령과 해당 인수를 모두 지정할 수 있도록 합니다. 별도로.
대체적이고 효율적인 접근 방식
더 효율적이고 간단한 접근 방식은 Go의 가변 인수를 활용합니다.
func exeCmd(cmd string, wg *sync.WaitGroup) { parts := strings.Fields(cmd) head := parts[0] parts = parts[1:len(parts)] out, err := exec.Command(head, parts...).Output() }
이 접근 방식에서 명령은 다음과 같이 분할됩니다. 해당 헤드(기본 명령)와 나머지 인수가 포함된 슬라이스입니다. 그런 다음 헤드와 부분이 exec.Command에 인수로 전달됩니다.
위 내용은 Go에서 다중 단어 시스템 명령을 어떻게 올바르게 실행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!