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