(command.CommandList children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Removing empty directories from etcd...'>)}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <cleanup_empty_dirs> name: cleanup_empty_dirs body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name ETCDCTL)} {<ls>} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [SUBDIR] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name ETCDCTL)} {<ls>} {<-p>} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(DQ <'/'> <Id.Lit_Dollar '$'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <cleanup_empty_dirs> more_env: [] words: [{<cleanup_empty_dirs>} {(${ Id.VSub_Name SUBDIR)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [59 78] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Removing empty key '> ($ Id.VSub_Number 1) <' ...'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name ETCDCTL)} {<rmdir>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Starting cleanup...'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cleanup_empty_dirs> more_env: [] words: [{<cleanup_empty_dirs>} {(DQ <'/registry'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Done with cleanup.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {(${ Id.VSub_Name SLEEP_SECOND)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] )