os.Exec和/ bin / sh:执行多个命令

布伦特

我遇到了os/exec图书馆问题我想运行一个shell并向其传递多个命令来运行,但是这样做却失败了。这是我的测试代码:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    fmt.Printf("-- Test 1 --\n`")
    command1 := fmt.Sprintf("\"%s\"", "pwd") // this one succeeds
    fmt.Printf("Running: %s\n", command1)
    cmd1 := exec.Command("/bin/sh", "-c", command1)
    output1,err1 := cmd1.CombinedOutput()
    if err1 != nil {
        fmt.Printf("error: %v\n", err1)
        return
    }
    fmt.Printf(string(output1))


    fmt.Printf("-- Test 2 --\n")
    command2 := fmt.Sprintf("\"%s\"", "pwd && pwd") // this one fails
    fmt.Printf("Running: %s\n", command2)
    cmd2 := exec.Command("/bin/sh", "-c", command2)
    output2,err2 := cmd2.CombinedOutput()
    if err2 != nil {
        fmt.Printf("error: %v\n", err2)
        return
    }
    fmt.Printf(string(output2))
}

运行此命令时,第二个示例出现错误127。似乎正在寻找字面的“ pwd && pwd”命令,而不是将其评估为脚本。

如果我从命令行执行相同的操作,则效果很好。

$ /bin/sh -c "pwd && pwd"

我在OS X 10.10.2上使用Go 1.4。

大卫·布德沃思(David Budworth)

引号用于您在命令行中键入的shell,在以编程方式启动应用程序时不应包含引号

只需进行此更改,它将起作用:

command2 := "pwd && pwd" // you don't want the extra quotes

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这个带有shebang#!/ bin / sh和exec python的代码片段在4个单引号内起作用?

来自分类Dev

Go中的Os Exec Sudo命令

来自分类Dev

Eclipse / bin / sh:g ++:找不到命令

来自分类Dev

即使使用#!/ bin / bash shebang,也不会在'-f foo.sh'命令中执行bash

来自分类Dev

Docker:找不到容器命令'/ bin / sh'

来自分类Dev

OS / exec优雅,循环兼容的stdin和stdout输入/输出

来自分类Dev

命令/ bin / sh因退出代码1和Embedded Pods框架而失败

来自分类Dev

Mac OS X / bin / bash:python:在某些IDE中找不到命令

来自分类Dev

如何安装游戏(.sh和.bin游戏)?

来自分类Dev

/ bin / sh:/root/start-docker.sh:docker中的exec命令时权限被拒绝

来自分类Dev

/ bin / sh:SET:找不到命令

来自分类Dev

bin / sh错误和mekefile错误127,但我在脚本中写入bin / bash吗?

来自分类Dev

“ bin / zkServer.sh start”和“ bin / zookeeper-server-start.sh config / zookeeper.properties”之间的区别

来自分类Dev

/ bin / sh:cc:找不到命令

来自分类Dev

获取os.exec的输出以显示执行进度的命令

来自分类Dev

用&&和;执行多个命令之间的区别

来自分类Dev

如何安装游戏(.sh和.bin游戏)?

来自分类Dev

运行.sh以执行多个命令

来自分类Dev

shell_exec不为inkscape命令执行sh文件

来自分类Dev

Synology / bin / sh:找不到命令

来自分类Dev

/ bin / sh:ntpq:找不到命令

来自分类Dev

/ bin / sh,/ bin / bash和/ bin / dash都坏了,我该如何再次安装它们

来自分类Dev

#!/ bin / sh和#!/ bin / bash有什么区别?

来自分类Dev

/ bin / sh:clang ++:找不到命令

来自分类Dev

命令/ bin / sh因退出代码1和Embedded Pods框架而失败

来自分类Dev

找不到LFS 6.7 / bin / sh命令

来自分类Dev

exec命令bin bash

来自分类Dev

无法使用 PHP exec() 执行 /usr/local/bin/program

来自分类Dev

与多个 Python bin 和包位置的混淆和冲突

Related 相关文章

  1. 1

    为什么这个带有shebang#!/ bin / sh和exec python的代码片段在4个单引号内起作用?

  2. 2

    Go中的Os Exec Sudo命令

  3. 3

    Eclipse / bin / sh:g ++:找不到命令

  4. 4

    即使使用#!/ bin / bash shebang,也不会在'-f foo.sh'命令中执行bash

  5. 5

    Docker:找不到容器命令'/ bin / sh'

  6. 6

    OS / exec优雅,循环兼容的stdin和stdout输入/输出

  7. 7

    命令/ bin / sh因退出代码1和Embedded Pods框架而失败

  8. 8

    Mac OS X / bin / bash:python:在某些IDE中找不到命令

  9. 9

    如何安装游戏(.sh和.bin游戏)?

  10. 10

    / bin / sh:/root/start-docker.sh:docker中的exec命令时权限被拒绝

  11. 11

    / bin / sh:SET:找不到命令

  12. 12

    bin / sh错误和mekefile错误127,但我在脚本中写入bin / bash吗?

  13. 13

    “ bin / zkServer.sh start”和“ bin / zookeeper-server-start.sh config / zookeeper.properties”之间的区别

  14. 14

    / bin / sh:cc:找不到命令

  15. 15

    获取os.exec的输出以显示执行进度的命令

  16. 16

    用&&和;执行多个命令之间的区别

  17. 17

    如何安装游戏(.sh和.bin游戏)?

  18. 18

    运行.sh以执行多个命令

  19. 19

    shell_exec不为inkscape命令执行sh文件

  20. 20

    Synology / bin / sh:找不到命令

  21. 21

    / bin / sh:ntpq:找不到命令

  22. 22

    / bin / sh,/ bin / bash和/ bin / dash都坏了,我该如何再次安装它们

  23. 23

    #!/ bin / sh和#!/ bin / bash有什么区别?

  24. 24

    / bin / sh:clang ++:找不到命令

  25. 25

    命令/ bin / sh因退出代码1和Embedded Pods框架而失败

  26. 26

    找不到LFS 6.7 / bin / sh命令

  27. 27

    exec命令bin bash

  28. 28

    无法使用 PHP exec() 执行 /usr/local/bin/program

  29. 29

    与多个 Python bin 和包位置的混淆和冲突

热门标签

归档