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

时间:2015-01-23 08:58:50

标签: android shell grep kernel output

我有一个重新包装android内核的二进制文件(不是mkbootimg)。 我正在编写一个脚本来自动化该过程。

我不想在屏幕上显示任何输出。所以我将输出重定向到名为foo.log的文件。

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

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

"targed file $1 is patched sucesfully, enjoy new kernel"

然后返回0并退出。否则返回1并退出。

我尝试使用grep,但由于我是命令行的新手,所以不要以正确的方式做任何事情。

如果需要更多内容,请随时询问..

1 个答案:

答案 0 :(得分:1)

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

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}'

然后您可以查看$?