(List (Com {[LIT_CHARS source]} {[LIT_CHARS sources/utility_functions.sh]}) (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_CHARS -lt]} {[LIT_CHARS 1]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Usage: timeout.sh SECONDS COMMANDS..."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "killtree "][VarSub $]]} {[LIT_CHARS EXIT]}) (= scope= flags=0 words=[] bindings=[('TIMEOUT', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (Pipeline (Subshell (Com {[LIT_CHARS eval]} {[DQ [VarSub @]]}) ) (Com {[LIT_CHARS tee]} {[ComSub (List (While (Com {[LIT_CHARS read]} {[LIT_CHARS -t]} {[DQ [VarSub TIMEOUT]]} {[LIT_CHARS -n]} {[LIT_CHARS 32]} {[LIT_CHARS i]}) (Com {[LIT_CHARS true]}) ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS kill]} {[LIT_CHARS -TERM]} {[VarSub $]}) )]}) ) )