(command.CommandList children: [ (C {(echo)} {(SQ <'--- setlock requires arguments'>)}) (command.CommandList children: [ (command.Sentence child:(C {(setlock)} {(whatever)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) ] ) (C {(echo)} {(SQ <'--- setlock complains if it cannot create lock file'>)}) (command.CommandList children: [ (command.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'>)}) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(-x)} {(nonexistent/lock)} {(echo)} {(wrong)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) ] ) (C {(echo)} {(SQ <'--- setlock creates lock file'>)}) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(lock)} {(echo)} {(ok)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) ] ) (C {(echo)} {(SQ <'--- setlock does not truncate lock file'>)}) (command.Simple words: [{(echo)} {(ok)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(lock)})] ) (command.CommandList children: [ (command.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'>)}) (command.CommandList children: [ (command.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'>)}) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ <'setlock -nx lock echo one && echo two'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) ] ) ] )