1*760c253cSXin Li#!/bin/bash -eu 2*760c253cSXin Li 3*760c253cSXin LiGOOD_STATUS=0 4*760c253cSXin LiBAD_STATUS=1 5*760c253cSXin LiSKIP_STATUS=125 6*760c253cSXin LiPROBLEM_STATUS=127 7*760c253cSXin Li 8*760c253cSXin Litmp_file=$(mktemp) 9*760c253cSXin Litrap "rm -f '${tmp_file}'" EXIT 10*760c253cSXin Ligrep -v '^ ' "$1" > "${tmp_file}" 11*760c253cSXin Li 12*760c253cSXin Liif grep -q bad "${tmp_file}"; then 13*760c253cSXin Li exit $BAD_STATUS 14*760c253cSXin Lifi 15*760c253cSXin Li 16*760c253cSXin Li# func_a containing '2' in its top line is BAD 17*760c253cSXin Liif grep -q 'func_a.*2' "${tmp_file}"; then 18*760c253cSXin Li exit $BAD_STATUS 19*760c253cSXin Lifi 20*760c253cSXin Li 21*760c253cSXin Li# func_b, func_c, and func_d with even values are bad in conjunction 22*760c253cSXin Liif grep -q 'func_b.*4' "${tmp_file}" && \ 23*760c253cSXin Li grep -q 'func_c.*6' "${tmp_file}" && \ 24*760c253cSXin Li grep -q 'func_d.*8' "${tmp_file}"; then 25*760c253cSXin Li exit $BAD_STATUS 26*760c253cSXin Lifi 27*760c253cSXin Li 28*760c253cSXin Li# If none of the BADness conditions are met 29*760c253cSXin Liexit $GOOD_STATUS 30