重定向命令行输出时同时使用 < 和 > 运算符
Using both < and > operators when redirecting command line output
我的批处理应该使用给定的输入数据来区分两个程序之间的输出。你可以想象我正在测试某个任务是否已经正确执行:
compareout.bat implementation.exe correct_implementation.exe test_data.txt
程序应该运行 使用测试数据的命令并比较它们的输出。我可以使用这个保存命令输出:
ping 8.8.8.8 /t >pinglog.txt
我可以使用这个将文件内容发送到标准输入:
implementation.txt < testdata.txt
但是我该如何同时使用这两个运算符呢?
就像使用运算符和参数一样简单。举个简单的例子:
cat <input.txt >output.txt
当然,只有当您有一个读取 STDIN
并写入 STDOUT
的命令时,它才真正适用——这并不真正适用于 ping
。
但是你所做的似乎是运行两个可执行文件并比较它们的输出。这有点复杂 - 将它们都喂给 STDOUT
很容易。将它们喂给两个单独的 STDOUT
s 并区分它们更难。我实际上不确定您是否可以在 Windows 平台上使用 Linux,我建议将两个不同命令的 STDOUT
重定向到不同的文件描述符。 (例如,而不是使用 STDIN
/STDOUT
/STDERR
创建一组额外的文件描述符)
类似于:
diff <(command1) <(command2)
我的批处理应该使用给定的输入数据来区分两个程序之间的输出。你可以想象我正在测试某个任务是否已经正确执行:
compareout.bat implementation.exe correct_implementation.exe test_data.txt
程序应该运行 使用测试数据的命令并比较它们的输出。我可以使用这个保存命令输出:
ping 8.8.8.8 /t >pinglog.txt
我可以使用这个将文件内容发送到标准输入:
implementation.txt < testdata.txt
但是我该如何同时使用这两个运算符呢?
就像使用运算符和参数一样简单。举个简单的例子:
cat <input.txt >output.txt
当然,只有当您有一个读取 STDIN
并写入 STDOUT
的命令时,它才真正适用——这并不真正适用于 ping
。
但是你所做的似乎是运行两个可执行文件并比较它们的输出。这有点复杂 - 将它们都喂给 STDOUT
很容易。将它们喂给两个单独的 STDOUT
s 并区分它们更难。我实际上不确定您是否可以在 Windows 平台上使用 Linux,我建议将两个不同命令的 STDOUT
重定向到不同的文件描述符。 (例如,而不是使用 STDIN
/STDOUT
/STDERR
创建一组额外的文件描述符)
类似于:
diff <(command1) <(command2)