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 중국어 웹사이트의 기타 관련 기사를 참조하세요!