日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Golang調(diào)用系統(tǒng)命令時如何指定執(zhí)行路徑(切換目錄)?

場景帶入

先看一個場景,假如從代碼托管平臺(github、gitlab、gitee等)克隆一個Golang項(xiàng)目,使用git clone完成以后,需要切換(cd)到這個項(xiàng)目里面去做一些操作,例如使用go mod download安裝依賴包。

這一系列操作如果使用程序來實(shí)現(xiàn)的話還是有一點(diǎn)不同的,特別是切換到項(xiàng)目目錄的動作。人工操作的話直接執(zhí)行 cd dst-path 命令即可,使用程序調(diào)用 cd 系統(tǒng)命令這么做卻是無效的。

Golang中的實(shí)現(xiàn)方法

Golang中調(diào)用系統(tǒng)命令的方法是這樣的,以上面的git clone為例:

package main

import "os/exec"

func main() {
err := exec.Command("git", "clone", "https://github.com/xxx/test").Run()
if err != nil {
panic(err)
}
}

接下來就需要切換到這里的 test 目錄去執(zhí)行 go mod tidy 命令了,你可能會想到這么實(shí)現(xiàn):

package main

import "os/exec"

func main() {
err := exec.Command("git", "clone", "https://github.com/xxx/test").Run()
if err != nil {
panic(err)
}

err = exec.Command("cd", "./test").Run()
if err != nil {
panic(err)
}

err = exec.Command("go", "mod", "download").Run()
if err != nil {
panic(err)
}
}

到這里你就錯了,在程序里這么寫是不會生效的,可以執(zhí)行代碼看看效果。正確的方式應(yīng)該這么寫:

package main

import "os/exec"

func main() {
err := exec.Command("git", "clone", "https://github.com/xxx/test").Run()
if err != nil {
panic(err)
}

cmd := exec.Command("go", "mod", "download")
cmd.Dir = "./test"
err = cmd.Run()
if err != nil {
panic(err)
}
}

本文標(biāo)題:Golang調(diào)用系統(tǒng)命令時如何指定執(zhí)行路徑(切換目錄)?
當(dāng)前URL:http://m.5511xx.com/article/djodsjo.html