繁体   English   中英

在Windows上使用bash回显“某些命令”

[英]echo “some command” using bash on Windows

因此,我具有以下命令序列,并且我不认为它可以在Windows上运行,但可以在Mac上运行:

echo "istanbul cover /Users/Olegzandr/WebstormProjects/suman/test/build-tests/empty.test.js --dir ./coverage/empty.test
istanbul cover /Users/Olegzandr/WebstormProjects/suman/test/build-tests/tes-t7-start.test.js --dir ./coverage/tes-t7-start.test
istanbul cover /Users/Olegzandr/WebstormProjects/suman/test/build-tests/test6.test.js --dir ./coverage/test6.test
istanbul report --dir coverage --include **/*coverage.json lcov" | bash

因此,基本上,我有4条单独的语句(由换行符char分隔),并且通过bash将这4条命令通过管道传输,并且它可以在Mac上运行(并且可能在Unix上运行)。 但是对于Windows,它似乎无法正常工作,我也没有任何指示。 Bash已安装在Windows计算机上,但是由于我正在编写库,因此我需要假定bash已安装在所有Windows计算机上-我认为Windows 7/8/10等适用。

任何人都知道为什么以上内容在Mac上却不能在Windows上运行吗?

我尝试了以下方法:

    const cmd = "istanbul cover C:\Users\denman\WebstormProjects\suman\test\build-tests\empty.test.js --dir ./coverage/empty.test && istanbul cover C:\Users\denman\WebstormProjects\suman\test\build-tests\tes-t7-start.test.js --dir ./coverage/tes-t7-start.test && istanbul cover C:\U
    sers\denman\WebstormProjects\suman\test\build-tests\test6.test.js --dir ./coverage/test6.test && istanbul report --dir coverage --include **/*coverage.json lcov"

    cp.exec(cmd, function(err,stdout,stderr){

      ////
    });

我得到:

Error: Command failed: C:\WINDOWS\system32\cmd.exe /s /c "istanbul cover C:\Users\denman\WebstormProjects\suman\test\build-tests\empty.test.js --dir ./coverage/empty.test&&istanbul cover C:\Users\denman\WebstormProjects\suman\test\build-tests\tes-t7-start.test.js -
-dir ./coverage/tes-t7-start.test&&istanbul cover C:\Users\denman\WebstormProjects\suman\test\build-tests\test6.test.js --dir ./coverage/test6.test&&istanbul report --dir coverage --include **/*coverage.json lcov"
=============================================================================
Writing coverage object [C:\Users\denman\WebstormProjects\suman\coverage\empty.test\coverage.json]
Writing coverage reports at [C:\Users\denman\WebstormProjects\suman\coverage\empty.test]
=============================================================================

    at ChildProcess.exithandler (child_process.js:203:12)
    at emitTwo (events.js:87:13)
    at ChildProcess.emit (events.js:172:7)
    at maybeClose (internal/child_process.js:818:16)
    at Socket.<anonymous> (internal/child_process.js:319:11)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at Pipe._onclose (net.js:469:12)

但是,为第一个测试文件生成了第一份覆盖率报告,但是所有后续命令均失败。

托马斯回答说,Windows上的Bash仅在Windows 10上可用,而在其他Windows上不可用。

任何尝试从Windows Shell(均为cmd / powershell)通过管道导入bash.exe均将失败,并显示错误消息Error: 0x80070057

我已经编写了一个程序来通过管理临时管道/参数文件来解决此问题。 http://github.com/chidea/GttBoW

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM