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