Shell脚本:如何从控制台读取程序的标准输出

黑色

我正在尝试编写一个shell脚本,该脚本为程序提供不同的输入并检查输出是否是预期的结果。在完成这些测试后,我确定可执行程序中是否存在错误。

我通过Shell脚本运行程序./my_program arg1 arg2(arg1和arg2是程序的命令行参数)。之后,脚本外壳会不断地提供不同的输入以对其my_program进行测试,并在控制终端(或控制台)中反复编写标准输出,如下所示:

Connection established.
Intermediate result is expected_intermediate_result1
Final result is expected_result1
Connection established.
Intermediate result is expected_intermediate_result2
Final result is expected_result2

它继续。对于每个输入,其输出都是已知的。因此它们之前是匹配的。

连接失败时:已写入Error in connection!或结果可能是错误的:

Connection established.
Intermediate result is result1
Final result is wrong_result1

该脚本除了提供输入外,还有另一个目的:检查结果。

因此,我想从控制台读取输出并将其与预期结果进行比较,以确定是否存在不一致的情况。

我希望您的协助来修改此代码:

while read console line-by-line
if the line is other than expected result
store this case to text file
done

注意事项:我不想使用expect我只想读取在控制台中编写的程序的输出。我不使用日志文件,因此不会使用文件(grep)中的搜索

感谢您的坚持!

埃德·莫顿

这是您要做什么?

./my_program arg1 arg2  |
grep -Fxq "Final result is expected_result1" || { printf 'Failed: "arg1 arg2" -> "expected_result1"\n'; exit 1; }

如果没有,请编辑您的问题以阐明您的要求并提供一个更具体的示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重定向控制台应用程序的标准输出

Shell脚本:如何在控制台上将字符串写入文件和标准输出?

Shell脚本可识别彩色控制台输出

在使用Python脚本执行期间如何读取Jenkins管道控制台输出?

如何从控制台的标准输入中读取?

如何将 shell 变量传递给读取脚本中控制台输入的命令?

如何读取Windows服务启动的控制台应用程序的输出

如何自动创建批处理/ shell脚本来运行Java控制台应用程序?

如何对可以读取输入并写入控制台的控制台程序进行单元测试

msys2如何显示非控制台应用程序的控制台输出?

读取控制台,然后输出 no。行数

打印 shell 脚本的控制台日志

执行控制台程序,写入标准输入并使用管道读取结果

未写入标准输出的控制台输出示例

程序不输出到控制台

读取正在运行的python进程的控制台输出(脚本)

Shell脚本,在“ MAC:”后命令的控制台输出中获取/提取mac地址

如何检查文件或控制台是否与标准输出相关联?

在Python中读取另一个程序的控制台输出

读取从控制台选择的XML标准配置文件

将标准输出重定向回控制台

没有控制台时写入标准输出

我如何从bat / cmd文件启动控制台应用程序,所以控制台输出将在bat内部?

控制台输出不同于python脚本输出

如何从控制台读取char

Rust:如何覆盖控制台输出?

如何覆盖控制台输出?

如何停止控制台输出

如何保存仍显示控制台输出