如果模式与文件匹配,如何 return 0?

How to return 0 if a pattern is matched from a file?

我有一个二进制文件可以重新打包 android 内核(不是 mkbootimg)。 我正在制作一个脚本来自动化这个过程。

我不想在屏幕上有任何输出。所以我将输出重定向到一个名为 foo.log.

的文件

我当前的工作文件夹是 data/local/working/。 命令是 - kernel_make "$zImage" "$ramdisk" "$cmdline" "$image" &> data/local/working/foo.log

我要做的是,如果输出的最后一行 (foo.log) 是这样的 -

"targed file is patched sucesfully, enjoy new kernel"

然后return0 退出。否则 return 1 并退出。

我正在尝试使用 grep,但由于我是命令行的新手,不知道如何以正确的方式进行操作。

请随时询问是否需要更多内容..

它的常见用法是 grep -q 'pattern',它不会生成任何输出,但您可以检查命令的 return 值以确定是否找到模式。看这个例子:

kent$ echo "foo"|grep -q bar
kent$ echo $?               
1
kent$ echo "bar"|grep -q bar
kent$ echo $?               
0

希望这就是您要找的。

要提取最后一行,您可以使用 tail 命令。

其实你也可以用awk一次搞定:

..cmd with..output|awk 'END{if (!/pattern/)exit 1}'

然后你可以查看 $?