如果模式与文件匹配,如何 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}'
然后你可以查看 $?
我有一个二进制文件可以重新打包 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}'
然后你可以查看 $?