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

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

在 Go 中執(zhí)行帶有參數(shù)的命令?

在 Go 中執(zhí)行帶有參數(shù)的命令?

Go
波斯汪 2023-06-19 15:58:17
在我的 shell 中,我可以執(zhí)行命令acme.sh --issue --dns -d exmaple.com --yes-I-know-dns-manual-mode-enough-go-ahead-please并獲取輸出?,F(xiàn)在我想這樣做,我的代碼如下:cmd := exec.Command("bash", "-c", "acme.sh --issue --dns -d exmaple.com --yes-I-know-dns-manual-mode-enough-go-ahead-please");out, err := cmd.CombinedOutput()if err != nil {    log.Fatalf("issue failed with error: %s\n", err)}fmt.Printf("combined out:\n%s\n", string(out))但我得到了錯(cuò)誤exit status 1。正如評(píng)論所說(shuō),我將論點(diǎn)分開(kāi):exec.Command("bash", "-c", "acme.sh", "--issue", "--dns", "-d exmaple.com", "--yes-I-know-dns-manual-mode-enough-go-ahead-please");but the result is that it exec acme.sh without parameters.
查看完整描述

2 回答

?
郎朗坤

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

使用此腳本作為 acme.sh


#!/bin/bash


echo "$*"

使用同一目錄中給出的程序會(huì)發(fā)生您報(bào)告的錯(cuò)誤


但是,如果我將當(dāng)前目錄添加到 shell PATH


export PATH=.:$PATH

然后程序按預(yù)期執(zhí)行,就我的版本而言


$ go run c.go?

combined out:

--issue --dns -d exmaple.com --yes-I-know-dns-manual-mode-enough-go-ahead-please

好的,這就是 bash -c 將單個(gè)字符串作為命令的情況(稍后會(huì)詳細(xì)介紹)


如果命令是這樣發(fā)出的


? ? cmd := exec.Command("acme.sh", "--issue", "--dns", "-d exmaple.com", "--

yes-I-know-dns-manual-mode-enough-go-ahead-please")

然后,當(dāng)稍后對(duì)您的問(wèn)題狀態(tài)進(jìn)行編輯時(shí),命令 acme.sh 將在沒(méi)有參數(shù)的情況下運(yùn)行。


問(wèn)題在于行為方式bash -c。


從手冊(cè)頁(yè)


bash 在調(diào)用時(shí)解釋以下選項(xiàng):


? ?-c? ? ? ? If the -c option is present, then commands are read from? the

? ? ? ? ? ? ?first non-option argument command_string.? If there are argu‐

? ? ? ? ? ? ?ments after the command_string,? they? are? assigned? to? the

? ? ? ? ? ? ?positional parameters, starting with $0.

在您的情況下,這意味著第一個(gè)參數(shù)bash -c被接受為命令。其他參數(shù)丟失,因?yàn)樗鼈兪切?bash shell 而不是命令的位置acme.sh參數(shù)

,確保腳本有正確的 bang 行并依賴內(nèi)核 binfmt 處理程序


查看完整回答
?
偶然的你

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

從 err 中排除exit status 1將得到正確的結(jié)果。


cmd := exec.Command("bash", "-c", "acme.sh --issue --dns -d exmaple.com --yes-I-know-dns-manual-mode-enough-go-ahead-please");

out, err := cmd.CombinedOutput()

if err != nil && err.Error() != "exit status 1" {

    log.Fatalf("issue failed with error: %s\n", err)

}

fmt.Printf("combined out:\n%s\n", string(out))


查看完整回答
反對(duì) 回復(fù) 2023-06-19
  • 2 回答
  • 0 關(guān)注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報(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)