(CommandList children: [ (C {(source)} {(sources/utility_functions.sh)}) (If arms: [ (if_arm cond: (C {(Lit_Other "[")} {($ VSub_Pound "$#")} {(-lt)} {(1)} {(Lit_Other "]")}) action: (CommandList children: [ (SimpleCommand words: [{(echo)} {(DQ ("Usage: timeout.sh SECONDS COMMANDS..."))}] redirects: [(Redirect op_id:Redir_GreatAnd arg_word:{(2)} fd:-1 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:(LeftVar name:TIMEOUT) rhs:{(DQ ($ VSub_Number "$1"))} spids:[64])] spids: [64] ) (C {(shift)}) (Pipeline children: [ (Subshell children:[(C {(eval)} {(DQ ($ VSub_At "$@"))})] spids:[7179]) (C {(tee)} { (CommandSubPart command_list: (CommandList children: [ (Sentence command: (While cond: (Sentence command: (C {(read)} {(-t)} {(DQ ($ VSub_Name "$TIMEOUT"))} {(-n)} {(32)} {(i)}) terminator: <Op_Semi ";"> ) body: (DoGroup child: (Sentence command:(C {(true)}) terminator:<Op_Semi ";">) spids: [103 108] ) ) terminator: <Op_Semi ";"> ) (Sentence command: (C {(sleep)} {(1)}) terminator: <Op_Semi ";"> ) (SimpleCommand words: [{(kill)} {(-TERM)} {($ VSub_Dollar "$$")}] redirects: [ (Redirect op_id: Redir_Great arg_word: {(/dev/null)} fd: 2 spids: [122] ) ] ) ] ) spids: [85 125] ) } ) ] negated: False ) ] )