(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (braced_var_sub token: <Id.VSub_Name LOGGER_SH> suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{<true>}) ) } {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<declare>} {<-g>} {<Id.Lit_VarLike 'LOGGER_SH='> <true>}) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>}) ) <'/common.sh'> } ) (C {<declare>} {<-g>} {<Id.Lit_VarLike 'LOGGER_FILE='> (DQ <logfile.txt>)}) (command.Simple words: [{<echo>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ (${ Id.VSub_Name LOGGER_FILE))} ) ] do_fork: T ) (command.ShFunction name: log body: (BraceGroup children: [ (command.Simple words: [{<echo>} {(DQ (${ Id.VSub_At '@'))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ (${ Id.VSub_Name LOGGER_FILE))} ) ] do_fork: T ) ] ) ) ] )