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

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

在程序化 shell 命令執(zhí)行中嵌入環(huán)境變量

在程序化 shell 命令執(zhí)行中嵌入環(huán)境變量

Go
ibeautiful 2023-06-12 16:58:38
我正處于嘗試執(zhí)行 shell 命令的情況,但它的參數(shù)被正確解釋為環(huán)境變量。例如,當(dāng)我在終端中輸入以下內(nèi)容時(shí)ls $GOPATHBash 解釋并擴(kuò)展變量$GOPATH,并列出目錄的內(nèi)容$GOPATH。我正在嘗試對(duì) Golang 的程序化 shell 執(zhí)行做類似的事情。我有以下代碼。package mainimport (    "bytes"    "fmt"    "log"    "os"    "os/exec")func main() {    cmd := exec.Command("echo", "$TESTVAR")    cmd.Env = append(os.Environ(),        "TESTVAR=this_is_a_test",    )    var outBuff bytes.Buffer    var errBuff bytes.Buffer    cmd.Stdout = &outBuff    cmd.Stderr = &errBuff    if err := cmd.Run(); err != nil {        log.Fatal(err)    }    fmt.Println(outBuff.String()) // empty    fmt.Println(errBuff.String()) // empty}這個(gè)程序輸出$ go run test.go$TESTVAR有誰(shuí)知道如何使 exec 庫(kù)將 $TESTVAR 解釋為環(huán)境變量而不是字符串文字?提前致謝!
查看完整描述

2 回答

?
至尊寶的傳說(shuō)

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

代替

cmd := exec.Command("echo", "$TESTVAR")

cmd := exec.Command("sh", "-c", "echo $TESTVAR")


查看完整回答
反對(duì) 回復(fù) 2023-06-12
?
紫衣仙女

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

Bash 和其他 shell 解釋和擴(kuò)展變量,但應(yīng)用程序不執(zhí)行 Bash。

應(yīng)用程序正在執(zhí)行 echo 命令。與大多數(shù)其他命令一樣,echo 命令不會(huì)在其參數(shù)中擴(kuò)展環(huán)境變量。

您可以按照另一個(gè)答案中所示運(yùn)行 Bash,也可以自行擴(kuò)展環(huán)境變量。以下是使用os.Expand函數(shù)執(zhí)行此操作的方法:

func newCommandEnv(env []string, cmd string, args ...string) *exec.Cmd {

? ? m := map[string]string{}

? ? for _, e := range env {

? ? ? ? if i := strings.Index(e, "="); i >= 0 {

? ? ? ? ? ? m[e[:i]] = e[i+1:]

? ? ? ? }

? ? }

? ? fn := func(placeholder string) string {

? ? ? ? return m[placeholder]

? ? }

? ? for i, a := range args {

? ? ? ? args[i] = os.Expand(a, fn)

? ? }

? ? fmt.Println(args)

? ? c := exec.Command(cmd, args...)

? ? c.Env = env

? ? return c

}


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

添加回答

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