>  기사  >  백엔드 개발  >  Go\의 `exec` 패키지를 사용하여 큰따옴표로 묶인 인수를 Windows 명령에 전달하는 방법은 무엇입니까?

Go\의 `exec` 패키지를 사용하여 큰따옴표로 묶인 인수를 Windows 명령에 전달하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 22:16:03646검색

How to Pass Double-Quoted Arguments to Windows Commands Using Go's `exec` Package?

큰따옴표로 묶은 인수를 사용하여 Windows 명령 실행

exec 패키지를 사용하여 Windows 명령을 실행할 때 인수 문자열의 특정 문자는 Windows가 해석하는 방식으로 인해 특별한 처리가 필요합니다. 큰 따옴표. 이 문서에서는 이러한 문제가 발생하는 이유를 조사하고 이 문제를 극복하기 위한 솔루션을 제공합니다.

기본적으로 Windows는 인수 문자열 내의 큰따옴표를 새 인수의 시작으로 해석합니다. Windows에서는 인수를 여러 부분으로 분할하므로 공백이 포함된 인수를 전달하려는 경우 문제가 됩니다. 예를 들어, 다음 명령을 실행하면 실패합니다.

exec.Command("find", `"SomeText"`).Output()

이는 Windows가 큰따옴표로 묶인 인수를 find 및 SomeText"라는 두 개의 별도 인수로 해석하기 때문입니다.

해결책 :

큰따옴표로 묶인 인수를 사용하여 Windows 명령을 실행하려면 아래와 같이 syscall.SysProcAttr의 CmdLine 필드를 사용해야 합니다.

<code class="go">cmd := exec.Command(`find`)
cmd.SysProcAttr = &syscall.SysProcAttr{}
cmd.SysProcAttr.CmdLine = `find "SomeText" test.txt`
out, err := cmd.Output()
fmt.Printf("%s\n", out)
fmt.Printf("%v\n", err)</code>

CmdLine을 설정하여 , 기본 인수 구문 분석을 우회하여 Windows에서 실행될 정확한 명령줄을 지정할 수 있습니다. 이렇게 하면 큰따옴표로 묶인 인수가 단일 인수로 처리됩니다.

위 내용은 Go\의 `exec` 패키지를 사용하여 큰따옴표로 묶인 인수를 Windows 명령에 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.