第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在 Go(golang)中直接調(diào)用系統(tǒng) shell?

如何在 Go(golang)中直接調(diào)用系統(tǒng) shell?

Go
阿晨1998 2022-05-23 16:41:56
根據(jù) golang 文檔,當(dāng)您使用 exec.Command() 時(shí),go 不會(huì)調(diào)用系統(tǒng)的 shell。來自“os/exec”包的 golang.org 文檔:與來自 C 和其他語言的“系統(tǒng)”庫(kù)調(diào)用不同,os/exec 包有意不調(diào)用系統(tǒng) shell,也不擴(kuò)展任何 glob 模式或處理通常由 shell 完成的其他擴(kuò)展、管道或重定向。這提出了一個(gè)問題。由于這種設(shè)計(jì)選擇,您在執(zhí)行命令時(shí)不能使用管道。因此,以下代碼不會(huì)按需要執(zhí)行。package mainimport (        "fmt"        "os/exec")func main() {        exec.Command("echo", "Hello", ">>", "~/thing").Run()        cmdOut, _ := exec.Command("cat", "~/thing").Output()        fmt.Println(cmdOut)}它不是打印出應(yīng)該包含單詞“Hello”的文件的內(nèi)容,而是打印出一個(gè)空白的換行符。我試過像這樣直接調(diào)用bash:package mainimport (        "fmt"        "os/exec")func main() {        exec.Command("bash", "-c", "echo", "Hello", ">>", "~/thing").Run()        cmdOut, _ := exec.Command("cat", "~/thing").Output()        fmt.Println(cmdOut)}但是,這會(huì)產(chǎn)生與原始代碼相同的結(jié)果。使用golang時(shí)如何直接調(diào)用系統(tǒng)shell?
查看完整描述

1 回答

?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

第二個(gè)參數(shù)應(yīng)該是一個(gè)字符串。在 shell 命令中,您也需要將其作為一個(gè)字符串傳遞。也~由 bash 解釋。你可以放心地假設(shè)它sh存在。Bash shell 不是必須的。


package main                                                                                                                                                              


import (                                                                                                                                                                  

 "fmt"                                                                                                                                                                    

 "os/exec"                                                                                                                                                                

)                                                                                                                                                                         


func main() {                                                                                                                                                             

 exec.Command("sh", "-c", "echo Hello >> ~/thing").Run()                                                                                                                  

 cmdOut, _ := exec.Command("sh", "-c", "cat ~/thing").Output()                                                                                                            

 fmt.Println(cmdOut)                                                                                                                                                      

}


查看完整回答
反對(duì) 回復(fù) 2022-05-23
  • 1 回答
  • 0 關(guān)注
  • 310 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)