exec 패키지를 사용하여 Windows에서 큰따옴표 인수가 포함된 명령을 실행하는 경우 Windows에서 인용문을 해석할 수 있습니다. 구분 기호 대신 명령으로 표시합니다. 이로 인해 예상치 못한 동작과 오류가 발생할 수 있습니다.
예를 들어 다음 코드 조각은 큰따옴표로 묶인 인수를 사용하여 find 명령을 실행하려고 시도합니다.
out, err := exec.Command("find", `"SomeText"`).Output()
그러나 Windows에서는 다음 명령이 실행됩니다.
find /SomeText"
따옴표는 인수를 구분하지 않고 명령의 일부로 해석됩니다.
이 문제를 해결하고 찾기를 올바르게 실행하려면 Windows에서 exec 패키지를 사용하여 명령을 실행하는 경우 다음 접근 방식을 사용할 수 있습니다.
<code class="go">package main import ( "fmt" "os" "os/exec" "syscall" ) func main() { 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>
이 코드에서 SysProcAttr 필드는 프로세스에 대한 명령줄을 명시적으로 설정하는 데 사용됩니다. "SomeText" test.txt를 찾도록 CmdLine 필드를 설정하면 큰따옴표로 묶인 인수가 그대로 유지된 상태로 명령이 실행됩니다.
이 접근 방식을 사용하면 큰따옴표로 묶인 인수를 명령에 올바르게 전달할 수 있으므로 다음과 같은 결과가 발생합니다. Windows에서 원하는 실행을 선택하세요.
위 내용은 exec 패키지를 사용하여 Windows에서 큰따옴표로 묶인 인수가 포함된 명령을 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!