(command.CommandList children: [ (C {(Id.KW_Set set)} {(-o)} {(nounset)}) (C {(Id.KW_Set set)} {(-o)} {(pipefail)}) (C {(Id.KW_Set set)} {(-o)} {(errexit)}) (command.ShFunction name: count-procs body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'sh=') ($ Id.VSub_Number '$1')}) (C {(local)} {(Id.Lit_VarLike 'code=') ($ Id.VSub_Number '$2')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:code) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'echo "[pid-of-sh $$]";' span_id:71)) (DQ (' ') ($ Id.VSub_DollarName '$code')) } spids: [69] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (command.Simple words: [ {(strace)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'trace=fork,execve' span_id:84))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'signal=none' span_id:90))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'verbose=none' span_id:96))} {(-ff)} {(--)} {($ Id.VSub_DollarName '$sh')} {(-c)} {(DQ ($ Id.VSub_DollarName '$code'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:113) fd: 2 arg_word: {(1)} ) ] ) (C {(fgrep)} {(SQ (Token id:Id.Lit_Chars val:'[pid' span_id:121))}) ] negated: F ) (C {(true)}) ] ) ] ) ) (command.ShFunction name: test-many body: (command.BraceGroup children: [ (command.ForEach iter_name: code iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (C {(echo)}) (C {(echo)}) (C {(echo)} {(DQ ('--- ') ($ Id.VSub_DollarName '$code') (' ---'))}) (C {(echo)}) (command.ForEach iter_name: sh iter_words: [{(dash)} {(bash)} {(mksh)} {(zsh)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(echo)}) (C {(echo)}) (C {(echo)} {(DQ ('--- ') ($ Id.VSub_DollarName '$sh') (' ---'))}) (C {(echo)}) (C {(count-procs)} {($ Id.VSub_DollarName '$sh')} {(DQ ($ Id.VSub_DollarName '$code'))} ) ] ) ) ] ) ) ] ) ) (command.ShFunction name: t1 body: (command.BraceGroup children: [ (C {(test-many)} {(SQ (Token id:Id.Lit_Chars val:'echo hi' span_id:236))} {(SQ (Token id:Id.Lit_Chars val:'/bin/echo one; /bin/echo two' span_id:242))} {(SQ (Token id:Id.Lit_Chars val:'{ /bin/echo one; /bin/echo two; }' span_id:248))} {(SQ (Token id:Id.Lit_Chars val:'{ echo one; echo two; } | wc -l' span_id:254))} {(SQ (Token id:Id.Lit_Chars val:'( echo one; echo two ) | wc -l' span_id:260))} ) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )