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

Patricia Arquette
풀어 주다: 2024-10-31 10:33:40
원래의
666명이 탐색했습니다.

How to Execute Commands with Double-Quoted Arguments on Windows Using the exec Package?

Windows에서 큰따옴표 인수가 포함된 명령 실행

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿