参见英文答案 > Can grep return true/false or are there alternative methods 6个
我有一个二进制文件重新包装androID内核(而不是mkbootimg).
我正在编写一个脚本来自动化该过程.
我不希望屏幕上有任何输出.所以我将输出重定向到名为foo.log的文件.
该命令是 – kernel_make“$zImage”“$ramdisk”“$cmdline”“$image”&>数据/本地/工作/ foo.log
我当前的工作文件夹是data / local / working /.
我要做的是,如果输出的最后一行(foo.log)是这样的 –
“targed file $1是sucesfully修补,享受新内核”
然后返回0并退出.否则返回1并退出.
我正在尝试使用grep,但是由于我是命令行的新手,所以不要以正确的方式做到这一点.
解决方法:
grep是要走的路,如果找到匹配则返回0.您实际上不需要输出该行,因此只需丢弃该行并使用该测试.在你的情况下,它只是
lastline=$(tail -n1 logfile)if grep pattern <<<"$lastline" &>/dev/null; then echo "yay, found pattern"else echo "darn"fi
观察“here string”结构<<<它将字符串显示为grep读取的文件,并且&>它重定向标准输出和错误输出(在这种情况下重定向到null).模式可以是“享受”或其他东西.用自定义处理替换回声.
但是,如果kernel_make失败则检查kernel_make是否返回1会更有意义.无需解析用户友好的日志输出(可能会更改或不再是最后一条消息).如果是这种情况(最有可能),我就是这么做的
kernel_make [...arguments...] && echo "yay" || echo "nay"
(或if语句,如grep情况).您可能熟悉exit语句,如果失败,您可能会在表单exit 1中使用它.
如果kernel_make是脚本的最后一行,你甚至不需要做任何事情……
总结以上是内存溢出为你收集整理的shell – 如果从文件匹配模式,如何返回0?全部内容,希望文章能够帮你解决shell – 如果从文件匹配模式,如何返回0?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)