(List (FunctionDef err_exit [] (List (Com {[LIT_CHARS print]} {[LIT_CHARS -u2]} {[LIT_CHARS -n]} {[DQ [\ LIT_ESCAPED_CHAR "\\t"]]}) (Com {[LIT_CHARS print]} {[LIT_CHARS -u2]} {[LIT_CHARS -r]} {[VarSub Command] [LIT_OTHER "["] [VarSub 1] [LIT_OTHER "]"] [LIT_OTHER ":"]} {[DQ [VarSub @ transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}} None]]]}) (Com {[LIT_CHARS let]} {[LIT_VAR_LIKE "Errors+="] [LIT_CHARS 1] =}) ) ) (Com {[LIT_CHARS alias]} {[LIT_VAR_LIKE "err_exit="] [SQ ] =}) (= scope= flags=0 words=[] bindings=[('Command', {[VarSub 0 transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})]) (Com {[LIT_CHARS integer]} {[LIT_VAR_LIKE "Errors="] [LIT_CHARS 0] =}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('tmp', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -dt]})]})]) (List (Com {[LIT_CHARS err_exit]} {[LIT_CHARS mktemp]} {[LIT_CHARS -dt]} {[LIT_CHARS failed]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "cd /; rm -rf "][VarSub tmp]]} {[LIT_CHARS EXIT]}) (FunctionDef grep [] (List (= scope= flags=0 words=[] bindings=[('vflag', {[SQ ]}), ('xflag', {[SQ ]}), ('cflag', {[SQ ]}), ('lflag', {[SQ ]}), ('nflag', {[SQ ]})]) (Com {[LIT_CHARS set]} {[LIT_CHARS -f]}) (While (DParen {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -v] [LIT_OTHER "*"]}], [{[LIT_CHARS -x] [LIT_OTHER "*"]}], [{[LIT_CHARS -c] [LIT_OTHER "*"]}], [{[LIT_CHARS -l] [LIT_OTHER "*"]}], [{[LIT_CHARS -n] [LIT_OTHER "*"]}], [{[LIT_CHARS -b] [LIT_OTHER "*"]}], [{[LIT_CHARS -e] [LIT_OTHER "*"]}], [{[LIT_CHARS -f] [LIT_OTHER "*"]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('vflag', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('xflag', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('cflag', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('lflag', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('nflag', {[LIT_CHARS 1]})]) (Com {[LIT_CHARS print]} {[SQ ]}) (List (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('expr', {[DQ [VarSub 1]]})]) ) (List (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('expr', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[VarSub 1]} 0)])]})]) ) (List (Com {[LIT_CHARS print]} {[VarSub 0] [LIT_OTHER ":"]} {[SQ ]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 2]}) ) (List (If (Com {[LIT_CHARS test]} {[DQ [VarSub expr]]} {[LIT_OTHER "="]} {[SQ ]}) (List (= scope= flags=0 words=[] bindings=[('expr', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub xflag]]}) (= scope= flags=0 words=[] bindings=[('expr', {[DQ [LIT_CHARS "*"][VarSub expr][LIT_CHARS "*"]]})]) ) (Com {[LIT_CHARS break]}) ) ) (Com {[LIT_CHARS shift]}) ) ) (= scope= flags=0 words=[] bindings=[('noprint', {[VarSub vflag] [VarSub cflag] [VarSub lflag]})]) (Com {[LIT_CHARS integer]} {[LIT_VAR_LIKE "n="] [LIT_CHARS 0] =} {[LIT_VAR_LIKE "c="] [LIT_CHARS 0] =} {[LIT_VAR_LIKE "tc="] [LIT_CHARS 0] =} {[LIT_VAR_LIKE "nargs="] [VarSub #] =}) (For i [{[DQ [VarSub @]]}]) (List (If (DParen {A2 AS_OP_LE {A Atom NODE_ARITH_WORD {[VarSub nargs]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}) (= scope= flags=0 words=[] bindings=[('fname', {[SQ ]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('fname', {[DQ [VarSub i]] [LIT_OTHER ":"]})]) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub i]]}) (Com {[LIT_CHARS exec]} < (FilenameRedirectNode filename={[VarSub i]} 0), > ) ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS line]}) (List (Com {[LIT_CHARS let]} {[LIT_VAR_LIKE "n="] [LIT_CHARS n] [LIT_OTHER "+"] [LIT_CHARS 1] =}) (Case to_match={[DQ [VarSub line]]}, pat_word_list=[[{[VarSub expr]}], [{[LIT_OTHER "*"]}]] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub noprint]]}) (Com {[LIT_CHARS print]} {[LIT_CHARS -r]} {[LIT_CHARS --]} {[DQ [VarSub fname][VarSub nflag test_op=VS_TEST_COLON_PLUS {[VarSub n] [LIT_CHARS ":"]}][VarSub line]]}) ) (Com {[LIT_CHARS let]} {[LIT_VAR_LIKE "c="] [LIT_CHARS c] [LIT_OTHER "+"] [LIT_CHARS 1] =}) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub vflag]]}) (Com {[LIT_CHARS print]} {[LIT_CHARS -r]} {[LIT_CHARS --]} {[DQ [VarSub fname][VarSub nflag test_op=VS_TEST_COLON_PLUS {[VarSub n] [LIT_CHARS ":"]}][VarSub line]]}) ) ) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub lflag]]}) (DParen {A Atom NODE_ARITH_WORD {[VarSub c]}}) ) (Com {[LIT_CHARS print]} {[LIT_CHARS -r]} {[LIT_CHARS --]} {[DQ [VarSub i]]}) ) (Com {[LIT_CHARS let]} {[LIT_VAR_LIKE "tc="] [LIT_CHARS tc] [LIT_OTHER "+"] [LIT_CHARS c] =} {[LIT_VAR_LIKE "n="] [LIT_CHARS 0] =} {[LIT_VAR_LIKE "c="] [LIT_CHARS 0] =}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub cflag]]}) (Com {[LIT_CHARS print]} {[VarSub tc]}) ) (Com {[LIT_CHARS let]} {[LIT_CHARS tc]}) ) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub tmp] [LIT_CHARS /grep]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=False body_word={[LIT_CHARS "this is a food bar test\n"] [LIT_CHARS "to see how many lines find both foo and bar.\n"] [LIT_CHARS "Some line contain foo only,\n"] [LIT_CHARS "and some lines contain bar only.\n"] [LIT_CHARS "However, many lines contain both foo and also bar.\n"] [LIT_CHARS "A line containing foobar should also be counted.\n"] [LIT_CHARS "There should be six lines with foo and bar.\n"] [LIT_CHARS "There are only two line with out foo but with bar.\n"]} 0), > ) (If (DParen {A2 AS_OP_NEQUAL {A Atom NODE_ARITH_WORD {[ComSub (Com {[LIT_CHARS grep]} {[LIT_CHARS -c]} {[SQ ]} {[VarSub tmp] [LIT_CHARS /grep]})]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 6]}}}) (Com {[LIT_CHARS err_exit]}) ) (Com {[LIT_CHARS exit]} {[ArithSub {A3 AS_OP_QMARK {A2 AS_OP_LESS {A Atom NODE_ARITH_WORD {[VarSub Errors]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 125]}}} {A Atom NODE_ARITH_WORD {[VarSub Errors]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 125]}}}]}) )