Bagaimana untuk Melaksanakan Perintah dengan Hujah Petikan Dua Kali pada Windows Menggunakan Pakej exec?

Patricia Arquette
Lepaskan: 2024-10-31 10:33:40
asal
623 orang telah melayarinya

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

Melaksanakan Perintah dengan Hujah Petikan Dua Kali pada Windows

Apabila menggunakan pakej exec untuk melaksanakan arahan dengan hujah petikan dua kali pada Windows, Windows boleh mentafsir petikan tandakan sebagai arahan dan bukannya pembatas. Ini boleh membawa kepada tingkah laku dan ralat yang tidak dijangka.

Sebagai contoh, coretan kod berikut cuba melaksanakan arahan find dengan hujah petikan dua kali:

out, err := exec.Command("find", `"SomeText"`).Output()
Salin selepas log masuk

Walau bagaimanapun, pada Windows, ini akan menyebabkan perintah berikut dilaksanakan:

find /SomeText"
Salin selepas log masuk

Tanda petikan ditafsirkan sebagai sebahagian daripada arahan, bukannya mengehadkan hujah.

Untuk menyelesaikan isu ini dan melaksanakan penemuan dengan betul arahan pada Windows menggunakan pakej exec, pendekatan berikut boleh digunakan:

<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>
Salin selepas log masuk

Dalam kod ini, medan SysProcAttr digunakan untuk menetapkan baris arahan untuk proses secara eksplisit. Dengan menetapkan medan CmdLine untuk mencari "SomeText" test.txt, perintah itu dilaksanakan dengan hujah petikan dua tetap utuh.

Pendekatan ini membenarkan hujah petikan dua kali dihantar dengan betul kepada arahan, menghasilkan pelaksanaan yang diingini pada Windows.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah dengan Hujah Petikan Dua Kali pada Windows Menggunakan Pakej exec?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!