(CommandList children: [ (C {(source)} {(sources/utility_functions.sh)}) (If arms: [ (if_arm cond: [(C {(Lit_Other "[")} {($ VSub_Pound "$#")} {(-lt)} {(1)} {(Lit_Other "]")})] action: [ (SimpleCommand words: [{(echo)} {(DQ ("Usage: timeout.sh SECONDS COMMANDS..."))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[44])] ) (C {(exit)} {(1)}) ] spids: [-1 35] ) ] spids: [-1 52] ) (C {(trap)} {(DQ ("killtree ") ($ VSub_Dollar "$$"))} {(EXIT)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TIMEOUT) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [64] ) ] spids: [64] ) (C {(shift)}) (Pipeline children: [ (Subshell child:(C {(eval)} {(DQ ($ VSub_At "$@"))}) spids:[7179]) (C {(tee)} { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (While cond: [ (Sentence child: (C {(read)} {(-t)} {(DQ ($ VSub_Name "$TIMEOUT"))} {(-n)} {(32)} {(i)}) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [(Sentence child:(C {(true)}) terminator:<Op_Semi ";">)] spids: [103 108] ) ) terminator: <Op_Semi ";"> ) (Sentence child:(C {(sleep)} {(1)}) terminator:<Op_Semi ";">) (SimpleCommand words: [{(kill)} {(-TERM)} {($ VSub_Dollar "$$")}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[122])] ) ] ) left_token: <Left_ProcSubOut ">("> spids: [85 125] ) } ) ] negated: False ) ] )