在DOS命令提示符下:
echo b | echo a
结果显示a
,但不显示b
。为什么?如何在一行中输入2 echo
?
我的总体目标是从Haskell程序启动多个进程,并查看每个进程的开始和结束时间。我会发出如下命令:
echo start | myprogram | echo end
答案 0 :(得分:2)
请参阅Command Shell Overview文章,了解如何在一行中运行多个命令。有一节使用多个命令和条件处理符号
command1 & command2
用于在一个命令行上分隔多个命令。 Cmd.exe运行第一个命令,然后运行第二个命令。
command1 && command2
使用以下命令运行&&只有符号前面的命令成功*。 Cmd.exe运行第一个命令,然后仅在第一个命令成功完成时运行第二个命令*。
*)如果命令成功完成操作,则返回退出代码零(0)或无退出代码。
[引用作者回答]
......和其他几个人。
管道(将命令的输出重定向到另一个命令的输入)在这里不是解决方案,只需执行如上所示的串行执行。
等等,还有更多:)
如果要将输出重定向到例如日志,通常会执行以下操作:
echo a > out.txt & echo b >> out.txt & echo c >> out.txt
但是有一个简写,使用上面文章中提到的括号:
(echo a & echo b & echo c) > out.txt
或等效(使用长命令更易读)
> out.txt (echo a & echo b & echo c)
正如您所看到的,这使您免于>
和>>
的组合,这通常是检查命令的另一件事。
答案 1 :(得分:0)
正如Stephan建议的那样,我将使用:
echo start & myprogram & echo end