在DOS命令提示符下:
echo b | echo a
导致显示a
,但不显示b
。 为什么? 如何在一条线路中管道 2echo
?
我的总体目标是从Haskell程序中启动几个进程,并查看每个进程何时开始和结束。 我会发出这样的命令:
echo start | myprogram | echo end
请参阅命令外壳概述一文,了解如何在一行中运行多个命令。有一个部分使用多个命令和条件处理符号
命令 1和命令 2
用于在一个命令行上分隔多个命令。Cmd.exe 运行第一个命令,然后运行第二个命令。
命令1 &&&命令 2
用于仅当符号前面的命令成功时运行 && 后面的命令*。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)
如您所见,这使您无需组合>
和>>
这通常是在命令中检查的另一件事。
正如斯蒂芬所建议的,我将使用:
echo start & myprogram & echo end