首頁 > 後端開發 > Golang > 為什麼我的 Go `exec.Command('mv', '*')` 失敗並顯示「退出狀態 1」?

為什麼我的 Go `exec.Command('mv', '*')` 失敗並顯示「退出狀態 1」?

DDD
發布: 2024-12-16 04:12:57
原創
533 人瀏覽過

Why Does My Go `exec.Command(

Go:使用通配符時出現錯誤「無法執行指令」

嘗試使用Go 的exec 套件執行「mv」指令時,可能會出現錯誤訊息,指出「退出狀態1」。在命令中使用通配符(例如“*”)時會出現此問題。

問題在於 shell 解釋指令的方式。當在 shell 中輸入通配符時,它會擴展為符合檔案名稱的清單。但是,當使用 exec 套件時,通配符不會擴展,並且以通配符本身作為參數來執行命令。

要解決此問題,可以採取兩種方法:

  1. 使用filepath.Glob: 使用filepath.Glob 函數手動將通配符擴展為檔案名稱列表,並將結果切片傳遞為exec 套件的參數。
  2. 呼叫 Shell: 透過使用 exec.Command(以「/bin/sh」作為二進位檔案和「-c」呼叫它)來利用 shell 的通配符擴充功能作為論點。然後,shell 將在將命令傳遞給「mv」可執行檔之前擴展通配符。

以上是為什麼我的 Go `exec.Command('mv', '*')` 失敗並顯示「退出狀態 1」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板