use*_*r_0 7 shell command-line grep control-m
我有一些遗留软件,我需要在Control-M下自动化.这些工作属于Windows 2008R2.
如果它们运行正常,这些作业的退出代码为0,但如果它们可以管理某些错误,则它们也会有.当特定字符串在日志中时,我需要发出警报.
该字符串不在可执行文件的输出中.
我为此实施了另一项工作.它会搜索文件中的字符串,并在"On Do Actions"中搜索该语句.
要在输出中使用语句,我认为使用像grep这样的东西.我用了:
findstr
findstr "myerrorcode" D:\Log\greptest_%%$ODATE..log
Run Code Online (Sandbox Code Playgroud)grep在cygwin下
在这两种情况下,我都有相同的情况:
但问题是:当在文件中找不到字符串时,grep和findstr都有一个返回码= 1.
如果文件无法打开以及一切运行正常但是找不到日志中的sring,我如何区分这些情况?
您应该能够使用grep的退出状态来检测失败的原因。根据POSIXgrep文档,退出状态部分:
Run Code Online (Sandbox Code Playgroud)EXIT STATUS The following exit values shall be returned: 0 One or more lines were selected. 1 No lines were selected. >1 An error occurred.
GNUgrep类似(一致,但更具体):
通常,如果选择了一行,则退出状态为 0;如果没有选择行,则退出状态为 1;如果发生错误,则退出状态为 2。[...] 其他 grep 实现可能会因错误而退出且状态大于 2。
例如,在 中bash,您可以使用case该命令来处理多个分支,如下所示:
#!/bin/bash
# search for error code in file
grep code file
# store the exit status in variable err
err=$?
# test several cases
case $err in
0) echo All good.;;
1) echo Code not found.;;
*) echo Error reading from file.;;
esac
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
406 次 |
| 最近记录: |