亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

捕獲 exec 的輸出。

捕獲 exec 的輸出。

Go
ITMISS 2022-08-15 16:57:37
我正在嘗試查找 helloworld.java 文件的路徑,以便我可以將其傳遞給編譯器函數。我有什么:我希望它返回此目錄中唯一的helloworld.java文件的[]byte類型,然后將其字符串化,然后將其傳遞給Java()函數。filePath, _ := exec.Command("find", "./helloworld/workspace", "-name", "*.java").Output()                    Java(string(filePath))問題是在我的java()函數中無法識別文件路徑,因此無法編譯它。但是,如果我硬編碼我從exec獲得的路徑。命令(“查找”)如下所示:這工作正常cmd := exec.Command("javac", filePath)cmd := exec.Command("javac", "./helloworld/workspace/src/main/java/com/coveros/demo/helloworld/HelloWorld.java")err := cmd.Run()但這不起作用:我錯過了什么,如何解決這個問題?func Java(filePath string) {    fmt.Println("compiler start")    cmd := exec.Command("javac", filePath)    err := cmd.Run()    if err != nil {        log.Fatal(err)    }        fmt.Println("compiler End")}
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我認為結果是返回多個可能的路徑,這些路徑由換行符分隔。如果將換行符打印到命令行,則換行符將被“隱藏”。您可以嘗試這樣做以顯示其中有一個新行。find"\n"fmt.Println(stringPath + "hello, am I on a new line?")stringPath


請參閱下面的內容,其中使用類似版本的 find 查找 json 文件,然后用換行符拆分字符串,然后遍歷這些路徑。如果路徑為空(可以是空白),則會跳過該路徑。


package main


import (

    "fmt"

    "os/exec"

    "strings"

)


func main() {

    filePath, err := exec.Command("find", ".", "-name", "*.json").Output()

    if err != nil {

        panic(err)

    }


    stringPath := string(filePath)

    paths := strings.Split(stringPath, "\n")


    CatFile(paths)

}


func CatFile(filePaths []string) {

    for _, path := range filePaths {

        if len(path) == 0 {

            continue

        }

            output, err := exec.Command("cat", path).Output()

        if err != nil {

            fmt.Println("Error!")

            fmt.Println(err)

        }

        fmt.Println(string(output))

    }

}

請參閱此相關問題,其中討論了以下內容:Go lang 區分 “\n” 和換行符


查看完整回答
反對 回復 2022-08-15
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號