(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '$#'))} {<-lt>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:me) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {($ Id.VSub_Number '$0')}) ) } spids: [67] ) ] ) (command.Simple words: [{<echo>} {(DQ <'Usage: '> ($ Id.VSub_DollarName '$me') <' size [-n] [command]'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'split data from stdin to multiple invocations of a command'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [ {<echo>} {(DQ <' -n pass the chunk number as the first parameter to command'>)} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'Examples:'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <' '> ($ Id.VSub_Number '$0') <' 10000 \'wc -c\' < /bin/ls'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <' '> ($ Id.VSub_Number '$0') <' 10000 < /bin/ls'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <' '> ($ Id.VSub_Number '$0') <' 10000 -n < /bin/ls'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [49 64] ) ] ) (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:chunk_size) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [166] ) ] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} {<-n>}) (BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pass_part) op: assign_op.Equal rhs: {<1>} spids: [186] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_Number '$1'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Star '$*'))} spids: [203] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: {<example_cmd>} spids: [210] ) ] ) ] ) (command.ShFunction name: example_cmd body: (BraceGroup children: [ (command.Sentence child: (C {<echo>} { (DQ <'processing part '> ($ Id.VSub_Number '$1') <' ('> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<wc>} {<-c>}) ) <' bytes)'> ) } ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:part) op:assign_op.Equal rhs:{<1>} spids:[238])] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:c) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<od>} {<-to1>} {<-An>} {<-N1>}) ) } spids: [249] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$c'))}) (command.ControlFlow token:<Id.ControlFlow_Break break>) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:c) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<echo>} {($ Id.VSub_DollarName '$c')}) ) } spids: [275] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$pass_part'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ppart) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$part')} spids: [294] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (BraceGroup children: [ (C {<printf>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) ($ Id.VSub_DollarName '$c') ) } ) (C {<head>} {<-c> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$chunk_size')} right: {<Id.Lit_Digits 1>} ) ) } ) ] ) (C {($ Id.VSub_DollarName '$cmd')} {($ Id.VSub_DollarName '$ppart')}) ] negated: F ) (command.ControlFlow token:<Id.ControlFlow_Break break>) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:part) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$part')} right: {<Id.Lit_Digits 1>} ) ) } spids: [336] ) ] ) ] ) ) ] )