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 关注
- 239 浏览
添加回答
举报