(command.CommandList children: [ (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'--- setlock requires arguments' span_id:3))}) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(whatever)}) terminator: (Token id:Id.Op_Semi val:';' span_id:9) ) (C {(echo)} {($ Id.VSub_QMark '$?')}) ] ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '--- setlock complains if it cannot create lock file' span_id: 19 ) ) } ) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(nonexistent/lock)} {(echo)} {(wrong)}) terminator: (Token id:Id.Op_Semi val:';' span_id:29) ) (C {(echo)} {($ Id.VSub_QMark '$?')}) ] ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '--- setlock -x exits quietly if it cannot create lock file' span_id: 39 ) ) } ) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(-x)} {(nonexistent/lock)} {(echo)} {(wrong)}) terminator: (Token id:Id.Op_Semi val:';' span_id:51) ) (C {(echo)} {($ Id.VSub_QMark '$?')}) ] ) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'--- setlock creates lock file' span_id:61))}) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(lock)} {(echo)} {(ok)}) terminator: (Token id:Id.Op_Semi val:';' span_id:71) ) (C {(echo)} {($ Id.VSub_QMark '$?')}) ] ) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'--- setlock does not truncate lock file' span_id:81))}) (command.Simple words: [{(echo)} {(ok)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:88) fd:-1 arg_word:{(lock)})] ) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(lock)} {(cat)} {(lock)}) terminator: (Token id:Id.Op_Semi val:';' span_id:99) ) (C {(echo)} {($ Id.VSub_QMark '$?')}) ] ) (C {(rm)} {(-f)} {(lock)}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '--- setlock -n complains if file is already locked' span_id: 115 ) ) } ) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ (Token id:Id.Lit_Chars val:'setlock -n lock echo one && echo two' span_id:127))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:129) ) (C {(echo)} {($ Id.VSub_QMark '$?')}) ] ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '--- setlock -nx exits quietly if file is already locked' span_id: 139 ) ) } ) (command.CommandList children: [ (command.Sentence child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ (Token id:Id.Lit_Chars val:'setlock -nx lock echo one && echo two' span_id:151))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:153) ) (C {(echo)} {($ Id.VSub_QMark '$?')}) ] ) ] )