(command.CommandList children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'--- setlock requires arguments'>)}] redirects: [] do_fork: T ) (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <setlock> more_env: [] words: [{<setlock>} {<whatever>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_QMark '?')}] redirects: [] do_fork: T ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'--- setlock complains if it cannot create lock file'>)}] redirects: [] do_fork: T ) (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <setlock> more_env: [] words: [{<setlock>} {<'nonexistent/lock'>} {<echo>} {<wrong>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_QMark '?')}] redirects: [] do_fork: T ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'--- setlock -x exits quietly if it cannot create lock file'>)}] redirects: [] do_fork: T ) (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <setlock> more_env: [] words: [{<setlock>} {<-x>} {<'nonexistent/lock'>} {<echo>} {<wrong>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_QMark '?')}] redirects: [] do_fork: T ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'--- setlock creates lock file'>)}] redirects: [] do_fork: T ) (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <setlock> more_env: [] words: [{<setlock>} {<lock>} {<echo>} {<ok>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_QMark '?')}] redirects: [] do_fork: T ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'--- setlock does not truncate lock file'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<ok>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<lock>})] do_fork: T ) (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <setlock> more_env: [] words: [{<setlock>} {<lock>} {<cat>} {<lock>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_QMark '?')}] redirects: [] do_fork: T ) ] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<lock>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'--- setlock -n complains if file is already locked'>)}] redirects: [] do_fork: T ) (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <setlock> more_env: [] words: [{<setlock>} {<lock>} {<sh>} {<-c>} {(SQ <'setlock -n lock echo one && echo two'>)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_QMark '?')}] redirects: [] do_fork: T ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'--- setlock -nx exits quietly if file is already locked'>)}] redirects: [] do_fork: T ) (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <setlock> more_env: [] words: [{<setlock>} {<lock>} {<sh>} {<-c>} {(SQ <'setlock -nx lock echo one && echo two'>)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_QMark '?')}] redirects: [] do_fork: T ) ] ) ] )