(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'duration='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'duration='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'duration='> name:duration) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'buckets='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'buckets='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'buckets='> name:buckets) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [{<1>} {<8>} {<64>} {<128>}] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'secsz='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'secsz='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'secsz='> name:secsz) op: assign_op.Equal rhs: {<512>} ) ] redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ <':'>)} {<INT>} {<QUIT>} {<TERM>} {<PIPE>} {<HUP>}] redirects: [] do_fork: T ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<END>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'USAGE: bitesize [-h] [-b buckets] [seconds]\n'> <' -b buckets # specify histogram buckets (Kbytes)\n'> <' -h # this usage message\n'> <' eg,\n'> <' bitesize # trace I/O size until Ctrl-C\n'> <' bitesize 10 # trace I/O size for 10 seconds\n'> <' bitesize -b '> <Id.Right_DoubleQuote '"'> <'8 16 32'> <Id.Right_DoubleQuote '"'> <' # specify custom bucket points\n'> ] ) ) (Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>}) ] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <die> name: die body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_At '@'))}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {<b> <Id.Lit_Colon ':'> <h>} {<opt>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName opt)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <b> pattern: (pat.Words words:[{<b>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'buckets='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'buckets='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'buckets='> name:buckets) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [{($ Id.VSub_DollarName OPTARG)}] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <h> pattern: (pat.Words words:[{<h>} {<Id.Lit_QMark '?'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName OPTIND)} right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tpoint='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tpoint='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoint='> name:tpoint) op: assign_op.Equal rhs: {<block> <Id.Lit_Colon ':'> <block_rq_issue>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'var='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'var='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'var='> name:var) op: assign_op.Equal rhs: {<nr_sector>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'duration='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'duration='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'duration='> name:duration) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sectors='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sectors='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sectors='> name:sectors) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name buckets> var_name: buckets bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) right: <Id.Right_DollarBrace '}'> ) } ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike max_i) right: (arith_expr.Binary op_id: Id.Arith_Minus left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name buckets> var_name: buckets prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike max_i) ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike sectors) right: {($ Id.VSub_DollarName i)} ) right: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Star left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sectors> var_name: sectors bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1024>} ) right: {($ Id.VSub_DollarName secsz)} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sectors> var_name: sectors bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } right: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sectors> var_name: sectors bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName i)} right: {<Id.Lit_Digits 1>} ) ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <die> more_env: [] words: [{<die>} {(DQ <'ERROR: bucket list must increase in size.'>)}] redirects: [] do_fork: T ) ] spids: [398 426] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [382 395] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'max_b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'max_b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'max_b='> name:max_b) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name buckets> var_name: buckets bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName max_i)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'max_s='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'max_s='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'max_s='> name:max_s) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sectors> var_name: sectors bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName max_i)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tpoints='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tpoints='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoints='> name:tpoints) op: assign_op.Equal rhs: { (DQ <'-e '> ($ Id.VSub_DollarName tpoint) <' --filter '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName var) <' < '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sectors> var_name: sectors bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'awkarray='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'awkarray='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'awkarray='> name:awkarray) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike max_i) ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'tpoints='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tpoints='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoints='> name:tpoints) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName tpoints) <' -e '> ($ Id.VSub_DollarName tpoint) <' --filter '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName var) <' >= '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sectors> var_name: sectors bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) <' && '> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tpoints='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tpoints='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoints='> name:tpoints) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName tpoints) <' '> ($ Id.VSub_DollarName var) <' < '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sectors> var_name: sectors bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName i)} right: {<Id.Lit_Digits 1>} ) ) right: <Id.Right_DollarBrace '}'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'awkarray='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'awkarray='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'awkarray='> name:awkarray) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName awkarray) <' buckets['> ($ Id.VSub_DollarName i) <']='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name buckets> var_name: buckets bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) <';'> ) } ) ] redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'awkarray='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'awkarray='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'awkarray='> name:awkarray) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName awkarray) <' buckets['> ($ Id.VSub_DollarName max_i) <']='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name buckets> var_name: buckets bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName max_i)}) right: <Id.Right_DollarBrace '}'> ) <';'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tpoints='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tpoints='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoints='> name:tpoints) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName tpoints) <' -e '> ($ Id.VSub_DollarName tpoint) <' --filter '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName var) <' >= '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sectors> var_name: sectors bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName max_i)}) right: <Id.Right_DollarBrace '}'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike duration) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'etext='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'etext='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'etext='> name:etext) op: assign_op.Equal rhs: {(DQ <'for '> ($ Id.VSub_DollarName duration) <' seconds'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd) op: assign_op.Equal rhs: {(DQ <'sleep '> ($ Id.VSub_DollarName duration))} ) ] redirects: [] ) ] spids: [613 623] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'etext='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'etext='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'etext='> name:etext) op: assign_op.Equal rhs: {(DQ <'until Ctrl-C'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd) op: assign_op.Equal rhs: {(DQ <'sleep 999999'>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Tracing block I/O size (bytes), '> ($ Id.VSub_DollarName etext) <...>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'out='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'out='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out) op: assign_op.Equal rhs: {(DQ <'-o /dev/stdout'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'stat='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'stat='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stat='> name:stat) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<perf>} {<stat>} {($ Id.VSub_DollarName tpoints)} {<-a>} {($ Id.VSub_DollarName out)} {($ Id.VSub_DollarName cmd)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_QMark '?')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'ERROR running perf:'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName stat))}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] spids: [696 710] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'most='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'most='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'most='> name:most) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName stat))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [ {<awk>} {<-v>} {<Id.Lit_VarLike 'tpoint='> ($ Id.VSub_DollarName tpoint)} { (SQ <'\n'> <'\t$2 == tpoint { gsub(/,/, ""); if ($1 > m) { m = $1 } }\n'> <'\tEND { print m }'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName stat))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [ {<awk>} {<-v>} {<Id.Lit_VarLike 'tpoint='> ($ Id.VSub_DollarName tpoint)} {<-v>} {<Id.Lit_VarLike 'max_i='> ($ Id.VSub_DollarName max_i)} {<-v>} {<Id.Lit_VarLike 'most='> ($ Id.VSub_DollarName most)} { (SQ <'\n'> <'\tfunction star(sval, smax, swidth) {\n'> <'\t\tstars = ""\n'> <'\t\t# using int could avoid error on gawk\n'> <'\t\tif (int(smax) == 0) return ""\n'> <'\t\tfor (si = 0; si < (swidth * sval / smax); si++) {\n'> <'\t\t\tstars = stars "#"\n'> <'\t\t}\n'> <'\t\treturn stars\n'> <'\t}\n'> <'\tBEGIN {\n'> <'\t\t'> ) (DQ ($ Id.VSub_DollarName awkarray)) (SQ <'\n'> <'\t\tprintf(" %-15s: %-8s %s\\n", "Kbytes", "I/O",\n'> <'\t\t "Distribution")\n'> <'\t}\n'> <'\t/Performance counter stats/ { i = -1 }\n'> <'\t# reverse order of rule set is important\n'> <'\t{ ok = 0 }\n'> <'\t$2 == tpoint { num = $1; gsub(/,/, "", num); ok = 1 }\n'> <'\tok && i >= max_i {\n'> <'\t\tprintf(" %10.1f -> %-10s: %-8s |%-38s|\\n",\n'> <'\t\t buckets[i], "", num, star(num, most, 38))\n'> <'\t\tnext\n'> <'\t}\n'> <'\tok && i >= 0 && i < max_i {\n'> <'\t\tprintf(" %10.1f -> %-10.1f: %-8s |%-38s|\\n",\n'> <'\t\t buckets[i], buckets[i+1] - 0.1, num,\n'> <'\t\t star(num, most, 38))\n'> <'\t\ti++\n'> <'\t\tnext\n'> <'\t}\n'> <'\tok && i == -1 {\n'> <'\t\tprintf(" %10s -> %-10.1f: %-8s |%-38s|\\n", "",\n'> <'\t\t buckets[0] - 0.1, num, star(num, most, 38))\n'> <'\t\ti++\n'> <'\t}\n'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] )