1 回答

TA貢獻1841條經驗 獲得超3個贊
/bin/sh: 非法選項 -
是因為-carg 解析器將其解釋為/bin/sh "- "- 具有諷刺意味的是(?)您的golang代碼段是正確的,但是您粘貼的代碼部分和問題的癥結顯示了錯誤的語法
無需涉及busybox或其他任何東西,就可以輕松地重現這一點
package main
import (
"fmt"
"os/exec"
)
func main() {
// c, err := exec.Command("/bin/sh", "-c", "echo -n hello | grep lo").Output()
c, err := exec.Command("/bin/sh", "-c ", "echo -n hello | grep lo").Output()
if err != nil {
ee := err.(*exec.ExitError)
panic(fmt.Errorf("c is %q and err is %q and stderr is %q", string(c), err, string(ee.Stderr)))
}
fmt.Println("OK")
}
結果,panic: c is "" and err is "exit status 2" and stderr is "/bin/sh: - : invalid option\n如果交換注釋行,它會打印OK
- 1 回答
- 0 關注
- 222 瀏覽
添加回答
舉報