(command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<nounset>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<pipefail>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<errexit>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [{<readonly>} {<Id.Lit_VarLike 'TIMEFORMAT='> (SQ <'%R'>)}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <strace-callback> name: strace-callback body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <strace> more_env: [] words: [{<strace>} {(DQ ($ Id.VSub_At '@'))}] redirects: [(Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <time-callback> name: time-callback body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.TimeBlock keyword: <Id.KW_Time time> pipeline: (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <compare> name: compare body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'callback='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<strace-callback>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [sh] iterable: (for_iter.Words words:[{<bash>} {<dash>} {<mksh>} {<zsh>}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName sh)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [ {($ Id.VSub_DollarName callback)} {($ Id.VSub_DollarName sh)} {<-c>} {(SQ <'echo "hi" > /dev/null'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [awk] iterable: (for_iter.Words words:[{<gawk>} {<mawk>}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName awk)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [ {($ Id.VSub_DollarName callback)} {($ Id.VSub_DollarName awk)} {(SQ <'{ print "hi" } '>)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<lua>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<lua>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [{($ Id.VSub_DollarName callback)} {<lua>} {<-e>} {(SQ <'print "hi"'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] spids: [244 251] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<perl>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [{($ Id.VSub_DollarName callback)} {<perl>} {<-e>} {(SQ <'print "hi\\n"'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<ruby>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<ruby>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [{($ Id.VSub_DollarName callback)} {<ruby>} {<-e>} {(SQ <'print "hi\\n"'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] spids: [301 308] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [py] iterable: (for_iter.Words words:[{<python>} {<python3>}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName py)} {<-S>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [ {($ Id.VSub_DollarName callback)} {($ Id.VSub_DollarName py)} {<-S>} {<-c>} {(SQ <'print("hi")'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [py] iterable: (for_iter.Words words:[{<python>} {<python3>}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName py)} {<Id.KW_Import import>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [ {($ Id.VSub_DollarName callback)} {($ Id.VSub_DollarName py)} {<-S>} {<-c>} {(SQ <'import json;print("hi")'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [py] iterable: (for_iter.Words words:[{<python>} {<python3>}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName py)} {<Id.KW_Import import>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [ {($ Id.VSub_DollarName callback)} {($ Id.VSub_DollarName py)} {<-S>} {<-c>} {(SQ <'import json;print("hi")'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'Small app.zip'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [{($ Id.VSub_DollarName callback)} {<python>} {<-S>} {<'_tmp/app.zip'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'hello app bundle'>)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [{($ Id.VSub_DollarName callback)} {<'_bin/hello.ovm'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'OSH app bundle true'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [{($ Id.VSub_DollarName callback)} {<'_bin/true'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'OSH app bundle Hello World'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$callback'> more_env: [] words: [{($ Id.VSub_DollarName callback)} {<'_bin/osh'>} {<-c>} {(SQ <'echo hi'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <compare-strace> name: compare-strace body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <compare> more_env: [] words: [{<compare>} {<strace-callback>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <compare-time> name: compare-time body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <compare> more_env: [] words: [{<compare>} {<time-callback>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <import-stats> name: import-stats body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<json>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <strace> more_env: [] words: [{<strace>} {<python>} {<-c>} {(SQ <'import json'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<json>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<nonexistent___>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <strace> more_env: [] words: [{<strace>} {<python>} {<-c>} {(SQ <'import nonexistent___'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<nonexistent___>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <make-zip> name: make-zip body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-r>} {<-f>} {<'_tmp/app'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<'_tmp/app.zip'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {<'_tmp/app'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'_tmp/app/lib1.py'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'print '> <Id.Right_DoubleQuote '"'> <'hi from lib1'> <Id.Right_DoubleQuote '"'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'_tmp/app/lib2.py'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'print '> <Id.Right_DoubleQuote '"'> <'hi from lib2'> <Id.Right_DoubleQuote '"'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'_tmp/app/__main__.py'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'import sys\n'> <'sys.path = [sys.argv[0]]\n'> <'import lib1\n'> <'import lib2\n'> <'print '> <Id.Right_DoubleQuote '"'> <'hi from zip'> <Id.Right_DoubleQuote '"'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <pushd> more_env: [] words: [{<pushd>} {<'_tmp/app'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <zip> more_env: [] words: [{<zip>} {<-r>} {<'../app.zip'>} {<.>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <popd> more_env: [] words: [{<popd>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <test-zip> name: test-zip body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <python> more_env: [] words: [{<python>} {<-S>} {<'_tmp/app.zip'>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <strace-zip> name: strace-zip body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <strace> more_env: [] words: [{<strace>} {<python>} {<-S>} {<'_tmp/app.zip'>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] )