>백엔드 개발 >Golang >`exec` 패키지를 사용하여 Windows에서 큰따옴표로 묶은 인수와 함께 `find` 명령을 실행하는 방법은 무엇입니까?

`exec` 패키지를 사용하여 Windows에서 큰따옴표로 묶은 인수와 함께 `find` 명령을 실행하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 01:55:291075검색

How to Execute `find` Command with Double-Quoted Arguments in Windows Using the `exec` Package?

Execu 패키지를 사용하여 Windows에서 큰따옴표 인수를 사용하여 Find 명령을 실행하는 경우

Windows에서 큰따옴표 인수를 사용하여 find 명령을 실행하는 경우 exec 패키지를 사용하면 Windows 셸의 예기치 않은 이스케이프 때문에 사용자에게 문제가 발생할 수 있습니다. 이 문제를 해결하려면 exec.Command 구조의 SysProcAttr 필드를 수정해야 합니다.

다음 코드 조각은 해결 방법을 제공합니다.

<code class="go">package main

import (
    "fmt"
    "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에서 직접 CmdLine을 설정하면, exec 패키지가 수행하는 기본 인수 구문 분석을 우회하여 큰따옴표로 묶인 인수를 포함하여 원하는 대로 정확하게 명령줄을 지정할 수 있습니다. 불행하게도 이 솔루션에는 잘 문서화되지 않은 syscall.SysProcAttr 유형을 직접 조작해야 합니다. 그러나 Windows 환경에서 원하는 인수를 사용하여 find 명령을 실행할 수 있는 안정적인 방법을 제공합니다.

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

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