2018-09-11 17:04
浏览 664

Golang exec.Command()bash命令不起作用

I want to run the following bash command using golang's exec.Command()

ls > sample.txt

For this I write


But this doesn't seem to work. I know I can write to a file by using


But I want to write sepcifically in that manner. Any idea how I can do it in golang?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doucongmishang2385 2018-09-11 17:13

    From the docs:

    Unlike the "system" library call from C and other languages, the os/exec package intentionally does not invoke the system shell and does not expand any glob patterns or handle other expansions, pipelines, or redirections typically done by shells. The package behaves more like C's "exec" family of functions. To expand glob patterns, either call the shell directly, taking care to escape any dangerous input, or use the path/filepath package's Glob function. To expand environment variables, use package os's ExpandEnv.

    With that in hand, my best guess to what you're trying to do is running bash and passing your command as an argument to it:

    out, err := exec.Command("bash", "-c", cmd)
    解决 无用
    打赏 举报

相关推荐 更多相似问题