我想跨編譯一個Go程序來執行一個bash腳本。是否有可能在bash中嵌入bash腳本?轉:在bash中嵌入bash腳本
我引用: Golang serve static files from memory
不知道這是否適用於執行雖然的bash腳本。我在這裏錯過了什麼嗎?一些澄清或指針將非常有幫助,謝謝!
我想跨編譯一個Go程序來執行一個bash腳本。是否有可能在bash中嵌入bash腳本?轉:在bash中嵌入bash腳本
我引用: Golang serve static files from memory
不知道這是否適用於執行雖然的bash腳本。我在這裏錯過了什麼嗎?一些澄清或指針將非常有幫助,謝謝!
是的,您可以在您的二進制和GO-bindata任何文件: https://github.com/jteeuwen/go-bindata
我還製作圍棋/ bash的混合應用程序做了一個工具: https://github.com/progrium/go-basher
你是否嘗試寫入流數據(根據引用go-bindata提供的函數返回[]字節)到一個臨時文件?
看到:http://golang.org/pkg/io/ioutil/#TempFile
然後你可以一個系統調用
http://golang.org/pkg/syscall/#Exec
其中第一個參數必須是一個shell執行它。
如果你真的有要做到這一點,只需構建一個腳本並將其作爲Stdin傳遞;這裏有一個例子在野外:
實際上,你可以直接在Go系統Shell界面。根據你的bash腳本中的內容,你可能完全轉換一切。例如處理文件,提取檔案,輸出文本,詢問用戶輸入,下載文件等等,可以在Go中本地完成。對於任何你絕對需要的外殼,你總是可以使用golang.org/pkg/os/exec。
我寫了一個代碼片斷,演示了一個非常簡單的基於Go的命令shell。基本上它管道用戶和shell之間的輸入,輸出和錯誤。它可以交互使用或直接運行大多數shell命令。我在這裏提到它主要是爲了演示Go的操作系統功能。檢查出來:github.com/lee8oi/goshell.go
當[os/exec'包](https://golang.org/pkg/os/exec/)會做時,不要*使用'syscall.Exec'。在沒有需要時,不*使用臨時文件。 –