(command.CommandList children: [ (C {<echo>} {(SQ <'--- fghack insists on an argument'>)}) (command.CommandList children: [ (command.Sentence child:(C {<fghack>}) terminator:<Id.Op_Semi _>) (C {<echo>} {($ Id.VSub_QMark '?')}) ] ) (C {<echo>} {(SQ <'--- fghack complains if it cannot run program'>)}) (command.CommandList children: [ (command.Sentence child:(C {<fghack>} {<'./nonexistent'>}) terminator:<Id.Op_Semi _>) (C {<echo>} {($ Id.VSub_QMark '?')}) ] ) (C {<echo>} {(SQ <'--- fghack runs a program'>)}) (command.CommandList children: [ (command.Sentence child: (C {<fghack>} {<sh>} {<-c>} {(SQ <'echo hi &'>)}) terminator: <Id.Op_Semi _> ) (C {<echo>} {($ Id.VSub_QMark '?')}) ] ) ] )