從Go 程式執行Linux Shell 內建指令
為了驗證Linux 上的程式是否存在,開發人員在嘗試執行下列操作時遇到錯誤透過Go 程式執行「命令」實用程式。這個錯誤源自於「command」是一個內建的Linux指令,而不是系統$PATH中的可執行二進位。問題出現了:如何在 Go 程式中執行內建 Linux 指令?
原生 Go 解決方案:exec.LookPath
根據提供的資源中的建議, 「指令」實用程式是 shell 內建的。對於原生 Go 執行,exec.LookPath 函式提供了一個解決方案。此函數在系統的可執行路徑中搜尋指定命令,如果找到則傳回完整路徑。
path, err := exec.LookPath("command") if err != nil { // Handle error } fmt.Println(path) // Prints the full path to the command
替代方法
如果原生 Go方法不適合,有替代方法:
cmd := exec.Command("which", "foobar") out, err := cmd.Output() if err != nil { // Handle error } fmt.Println(string(out)) // Prints the full path to the program (if found)
cmd := exec.Command("/bin/bash", "-c", "command -v foobar") out, err := cmd.Output() if err != nil { // Handle error } fmt.Println(string(out)) // Prints the full path to the program (if found)
以上是如何透過Go程式執行內建的Linux Shell指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!