(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.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name LOGGER_FILE))} ) ] ) (command.ShFunction name: log body: (command.BraceGroup children: [ (command.Simple words: [{<echo>} {(DQ (${ Id.VSub_At '@'))}] redirects: [ (redir.Redir op: <Id.Redir_DGreat '>>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name LOGGER_FILE))} ) ] ) ] ) ) ] )