在日志文件中搜索
我有一些传统软件需要在Control-M下自动运行。 这些工作都在Windows 2008R2之下。
如果它们运行正常,这些作业的退出代码为0,但是如果它们可以管理一些错误。 当特定的字符串在日志中时,我需要发出警报。
该字符串不在可执行文件的输出中。
我为此执行了另一项工作。 它会搜索文件中的字符串,然后在“执行操作”中搜索该语句。
要在输出中声明我认为使用类似grep的东西。 我用了:
findstr
findstr "myerrorcode" D:Loggreptest_%%$ODATE..log
在cygwin下的grep
在这两种情况下,我都有相同的情况:
但问题是:当在文件中找不到字符串时,grep和findstr都有一个返回码= 1。
当文件无法打开并且一切运行正常时,如何区分这些情况,但是未找到日志中的sring?
您应该能够使用grep
的退出状态来检测失败的原因。 根据POSIX grep
文档,退出状态部分:
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.
它与GNU grep
类似(一致,但更具体):
正常情况下,如果选择了一条线,退出状态为0,如果未选择线,则退出状态为2,如果发生错误,退出状态为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
您可以轻松地在Control-M中处理此操作:添加作业选项卡“操作”
一个长度为1到132个字符的字符串,包含作业脚本文件中的语句指定的字符串可以是该语句的一部分。
语句字符串可以包含掩码字符。 有效的掩码字符是:
* – represents any number of characters (including no characters)
$ – represents any single character
? – represents any single character
字符串,长度为1到255个字符,与操作系统对指定语句的响应进行比较。
代码字符串可以包含掩码字符。 有效的掩码字符是:
* – represents any number of characters (including no characters)
$ – represents any single character
? – represents any single character
示例:执行操作控制-M 8
链接地址: http://www.djcxy.com/p/41219.html上一篇: Search in logfile