【发布时间】:2017-01-12 12:23:56
【问题描述】:
我正在尝试运行 bash.exe(适用于 Windows 的 Ubuntu 上的 Bash)作为 Sublime Text 的构建命令。但是,bash.exe 有一个 bug,不支持将其 stdout 输出到任何管道。
问题是这样的:如何运行 cmd 行(即“bash.exe -c ls”)并捕获输出,而无需将 bash.exe 输出到 Windows 上的管道中?
我愿意在 Windows 上使用任何语言或环境来制作此工具。
编辑
我跑了
bashTest = subprocess.Popen(["bash.exe", "-c", "ls"]), stdout=subproccess.PIPE)
结果:
bashTest.communicate()[0] b'E\x00r\x00r\x00o\x00r\x00:\x00\x000\x00x\x008\x000\x000\x007\x000\x000\x005\x007\x00\r\x00\r\x00\n\x00'
【问题讨论】:
-
你可以使用这样的管道:
echo "hello world" | { read test; echo test=$test; },甚至可以编写这样的函数:read_from_pipe() { read "$@" <&0; } -
问题是任何时候代码都试图将 bash.exe 的输出打印到管道,正如github page 所说,提供的唯一信息是一些随机错误消息。管道根本不能成为流程的一部分。
-
请发布错误和您的输入
-
[为清楚起见,评论移至主要问题编辑]
标签: windows bash pipe subprocess windows-subsystem-for-linux