(command.CommandList children: [ (C {<echo>} {(SQ <'--- envini requires arguments'>)}) (command.CommandList children: [ (command.Sentence child:(C {<envini>} {<whatever>}) terminator:<Id.Op_Semi _>) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) (C {<echo>} {(SQ <'--- envini complains if it cannot read file'>)}) (C {<ln>} {<-s>} {<envi>} {<envi>}) (command.CommandList children: [ (command.Sentence child: (C {<envini>} {<envi>} {<echo>} {<yes>}) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) (C {<rm>} {<envi>}) (C {<echo>} {(SQ <'--- envini adds variables'>)}) (command.Simple words: [{<cat>}] redirects: [ (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<envi>}) (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 70 stdin_parts: [ <'; comment\n'> <'broken\n'> <' Message = This is a test.\n'> <'[sect]\n'> <'Message=This is only a test. \n'> ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<envini>} {<envi>} {<sh>} {<-c>} {(SQ <'echo $Message; echo $sect_Message'>)}) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) (C {<echo>} {(SQ <'--- envini adds prefix'>)}) (command.CommandList children: [ (command.Sentence child: (C {<envini>} {<-p>} {<prefix_>} {<envi>} {<sh>} {<-c>} {(SQ <'echo $Message; echo $prefix_Message'>)} ) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '$?')}) ] ) ] )