【问题标题】:Trying to execute a script with WSL, but it doesn't do execute anything after the `bash` command尝试使用 WSL 执行脚本,但在 `bash` 命令之后它不执行任何操作
【发布时间】:2021-01-29 21:40:56
【问题描述】:

我有这个批处理脚本,我可以通过复制粘贴到命令提示符来成功运行它。它以 bash 开始,它启动 WSL,然后包含批处理脚本的其余部分。当我将脚本作为 .cmd 文件运行时,它不会做任何超出此

的操作

脚本的其余部分永远不会执行。我该如何解决这个问题?

【问题讨论】:

  • 这是 100% 正常的。当脚本包含非后台命令时,它会启动该命令,然后等待该命令退出,然后再执行其他任何操作。因此,如果您的脚本运行bash,它不会执行任何其他操作(不会运行任何后续命令),直到 bash 退出。
  • ...如果您的脚本是用 bash 编写的,我会告诉您传递您希望它作为 heredoc 运行的内容,但如果这是一个 cmd脚本,你需要 cmd.exe 专家来告诉你本地等价于 heredoc 是什么,如果甚至存在这样的东西的话。
  • 或者您可以将脚本的 bash 部分放在一个单独的文件中,而不是运行 bash,而是运行 bash thatfile

标签: bash cmd windows-subsystem-for-linux wsl-2


【解决方案1】:

我没有可用的 Windows VM,因此无法测试,但我的理解是 cmd 一个一个地执行命令,因此 bash 之后的下一个命令只会在第一个成功完成后执行。

如果我上面说的是真的,那么如果你退出 bash 命令,那么你会看到其余的命令被一个一个地执行

如果你有 bash 脚本要运行,那么现在来解决这个问题

bash -c "~/myscript.sh"

bash -c "command"

这应该可以完成工作

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多