(CommandList children: [ (C {(echo)} {(SQ <'--- setlock requires arguments'>)}) (Sentence child:(C {(setlock)} {(whatever)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock complains if it cannot create lock file'>)}) (Sentence child: (C {(setlock)} {(nonexistent/lock)} {(echo)} {(wrong)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock -x exits quietly if it cannot create lock file'>)}) (Sentence child: (C {(setlock)} {(-x)} {(nonexistent/lock)} {(echo)} {(wrong)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock creates lock file'>)}) (Sentence child:(C {(setlock)} {(lock)} {(echo)} {(ok)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock does not truncate lock file'>)}) (SimpleCommand words: [{(echo)} {(ok)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(lock)} spids:[88])] ) (Sentence child:(C {(setlock)} {(lock)} {(cat)} {(lock)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(rm)} {(-f)} {(lock)}) (C {(echo)} {(SQ <'--- setlock -n complains if file is already locked'>)}) (Sentence child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ <'setlock -n lock echo one && echo two'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock -nx exits quietly if file is already locked'>)}) (Sentence child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ <'setlock -nx lock echo one && echo two'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) ] )