(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_Pound '$#'))} {(-lt)} {(1)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:62) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:me) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:68) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_Number '$0')})] ) ) } spids: [67] ) ] ) (command.Simple words: [{(echo)} {(DQ ('Usage: ') ($ Id.VSub_DollarName '$me') (' size [-n] [command]'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:83) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ ('split data from stdin to multiple invocations of a command'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:93) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:99) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [ {(echo)} {(DQ (' -n pass the chunk number as the first parameter to command'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:109) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ ('Examples:'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:119) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ (' ') ($ Id.VSub_Number '$0') (" 10000 'wc -c' < /bin/ls"))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:131) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ (' ') ($ Id.VSub_Number '$0') (' 10000 < /bin/ls'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:143) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ (' ') ($ Id.VSub_Number '$0') (' 10000 -n < /bin/ls'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:155) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:159) 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: (Token id:Id.Op_Semi val:';' span_id:168) ) (C {(shift)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=')} {(-n)}) (command.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: (Token id:Id.Op_Semi val:';' span_id:188) ) (command.Sentence child: (C {(shift)}) terminator: (Token id:Id.Op_Semi val:';' span_id:191) ) ] ) ] ) (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: (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} { (DQ ('processing part ') ($ Id.VSub_Number '$1') (' (') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:226) command_list: (command.CommandList children:[(C {(wc)} {(-c)})]) ) (' bytes)') ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:233) ) ] ) ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:part) op:assign_op.Equal rhs:{(1)} spids:[238])] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:241) cond: [ (command.Sentence child: (C {(true)}) terminator: (Token id:Id.Op_Semi val:';' span_id:244) ) ] 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: (Token id:Id.Left_DollarParen val:'$(' span_id:250) command_list: (command.CommandList children: [(C {(od)} {(-to1)} {(-An)} {(-N1)})] ) ) } spids: [249] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$c'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:272) ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:c) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:276) command_list: (command.CommandList children: [(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: [ (command.BraceGroup children: [ (C {(printf)} { (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:304) ) ($ Id.VSub_DollarName '$c') ) } ) (C {(head)} {(-c) (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$chunk_size')}) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } ) ] ) (C {($ Id.VSub_DollarName '$cmd')} {($ Id.VSub_DollarName '$ppart')}) ] negated: F ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:333) ) ] ) (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: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$part')}) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [336] ) ] ) ] ) ) ] )