mkbootimgではなく、Androidカーネルを再パッケージするバイナリがあります。このプロセスを自動化するスクリプトを作成しています。
画面に何の出力も必要ありません。そのため、出力をfoo.logというファイルにリダイレクトします。
コマンドは -kernel_make "$zImage" "$ramdisk" "$cmdline" "$image" &> data/local/working/foo.log
私の現在の作業フォルダはですdata/local/working/
。私が望むのは、出力の最後の行(foo.log)が次のような場合です。
"targed file $1 is patched sucesfully, enjoy new kernel"
その後、0を返して終了します。それ以外の場合は1を返し、終了します。
grepを使用して実行しようとしていますが、コマンドラインを初めて使用するので、正しい方法で実行する方法がわかりません。
答え1
グレブ終了デフォルトでは、一致0
する場合と1
一致しない場合です。だからあなたはこれを行うことができます:
grep -q "targed file \$1 is patched sucesfully, enjoy new kernel" foo.log
すべての出力を抑制します-q
。
テストするには、次のように話します。
grep -q "targed file \$1 is patched sucesfully, enjoy new kernel" foo.log && echo OK || echo BAD
実際にファイル名で置き換えられた場合、または同じ名前で$1
置き換えることができます。\$1
.*
\S\+
次の点を修正(確認)することも検討できます。
targed -> target
sucesfully -> successfully
コメントで述べたように、これはファイル全体と一致します。tail
@orionの説明に従って使用してください。
答え2
grep
一致するものが見つかった場合は0を返す方法です。実際にその行を出力する必要はありませんので、その行を捨ててテストを使用してください。あなたの場合、これはただ
lastline=$(tail -n1 logfile)
if grep pattern <<<"$lastline" &>/dev/null; then
echo "yay, found pattern"
else
echo "darn"
fi
<<<
文字列をgrep
読み取るファイルにレンダリングし、&>
標準出力とエラー出力(この場合はnull)をリダイレクトする「ここの文字列」構文を見てください。モードは「Enjoy」または他のものです。 echoをカスタム処理に置き換えます。
kernel_make
ただし、失敗した場合に1が返されることを確認する方が合理的です。ユーザーフレンドリーなログ出力を解析する必要はありません(変更される可能性があるか、最後のメッセージではない可能性があります)。もしそうなら(おそらく)私はそうします。
kernel_make [...arguments...] && echo "yay" || echo "nay"
(またはgrepケースのようなifステートメント)。失敗時にexit
フォームで使用できるステートメントに精通しています。exit 1
スクリプトの最後の行であればkernel_make
何もする必要はありません...