(CommandList children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-lt)} {(DQ (2))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('Usage: ') (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Number '$0')})]) left_token: <Left_Backtick '`'> spids: [105 109] ) (' timeout_in_seconds command') ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[113])] ) (SimpleCommand words: [ {(echo)} { (DQ ('Example: ') (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Number '$0')})]) left_token: <Left_Backtick '`'> spids: [121 125] ) (' 2 sleep 3 || echo timeout') ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[129])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 98] ) ] spids: [16777215 137] ) (FuncDef name: cleanup body: (BraceGroup children: [ (C {(trap)} {(-)} {(ALRM)}) (SimpleCommand words: [{(kill)} {(-ALRM)} {($ VSub_Name '$a')}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[163])] ) (AndOr ops: [Op_DAmp] children: [ (SimpleCommand words: [{(kill)} {($ VSub_Bang '$!')}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[174])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(124)}) ] ) ] spids: [144] ) spids: [140 143] ) (FuncDef name: watchit body: (BraceGroup children: [ (C {(trap)} {(DQ (cleanup))} {(ALRM)}) (Sentence child:(C {(sleep)} {($ VSub_Number '$1')}) terminator:<Op_Amp '&'>) (C {(wait)}) (C {(kill)} {(-ALRM)} {($ VSub_Dollar '$$')}) ] spids: [197] ) spids: [193 196] ) (Sentence child:(C {(watchit)} {($ VSub_Number '$1')}) terminator:<Op_Amp '&'>) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:a) op:Equal rhs:{($ VSub_Bang '$!')} spids:[231])] spids: [231] ) (C {(shift)}) (C {(trap)} {(DQ (cleanup))} {(ALRM)} {(INT)}) (Sentence child:(C {(DQ ($ VSub_At '$@'))}) terminator:<Op_Amp '&'>) (Sentence child:(C {(wait)} {($ VSub_Bang '$!')}) terminator:<Op_Semi ';'>) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RET) op:Equal rhs:{($ VSub_QMark '$?')} spids:[265])] spids: [265] ) (C {(kill)} {(-ALRM)} {($ VSub_Name '$a')}) (C {(wait)} {($ VSub_Name '$a')}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Name '$RET')}) ] )