我正在尝试编写一个 shell 脚本,它为程序提供不同的输入并检查输出是否为预期结果。在这些测试的结论中,我决定我的可执行程序中是否存在错误。
我使用 ./my_program arg1 arg2
在 shell 脚本上运行我的程序(arg1 和 arg2 是我程序的命令行参数)。之后,脚本 shell 不断地向 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; }
如果没有,请编辑您的问题以阐明您的要求并提供更具体的示例。
我是一名优秀的程序员,十分优秀!