(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<gnu>} {<updatedb>} {<wrapper>} {<Id.KW_For for>} {<tw>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'codes_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'codes_default='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'codes_default='> name:codes_default) op: assign_op.Equal rhs: {(DQ <'lib/find/codes'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dirs_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirs_default='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirs_default='> name:dirs_default) op: assign_op.Equal rhs: {(DQ <'/'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'drop_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'drop_default='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'drop_default='> name:drop_default) op: assign_op.Equal rhs: {(DQ <'/afs|/backup|/dev|/proc|/tmp|/usr/tmp|/var/tmp'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'keep_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep_default='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep_default='> name:keep_default) op: assign_op.Equal rhs: {(DQ <'/home|/usr/local|/usr/common'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COMMAND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMMAND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMAND='> name:COMMAND) op: assign_op.Equal rhs: {<updatedb>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<0> ($ Id.VSub_DollarName opt)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0123> pattern: (pat.Words words:[{<0123>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ <'-a '> ($ Id.VSub_DollarName COMMAND))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: { (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[-?\n'> <Id.Char_Literals '@(#)$Id: updatedb (AT&T Labs Research) 2003-11-14 $\n'> <Id.Char_Literals ']\n'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName USAGE_LICENSE) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[+NAME?updatedb - generate locate pathname database]\n'> <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals updatedb> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' generates the locate pathname database that is used\n'> <Id.Char_Literals '\tby '> <Id.Char_OneChar '\\b'> <Id.Char_Literals locate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals find> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tw> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1). Sufficient privilege\n'> <Id.Char_Literals '\tis required to change the system locate database.]\n'> <Id.Char_Literals '[+?This implemenation is a script that generates a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tw> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command that\n'> <Id.Char_Literals '\tdoes all the work.]\n'> <Id.Char_Literals '[a:auto-home?Include the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nis> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) '> <Id.Char_OneChar '\\a'> <Id.Char_Literals auto.home> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' auto mounter home directories\n'> <Id.Char_Literals '\tin '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/home'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. NOTE: this causes the home directories to be mounted\n' > <Id.Char_Literals '\tand may swamp the mount table.]\n'> <Id.Char_Literals '[d:directory|localpaths?Local directories to include in the database. If the\n' > <Id.Char_Literals '\tfirst '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then the default list is appended.]:\n'> <Id.Char_Literals '\t["dir1 dir2 ...":='> ] right: <Id.Right_SingleQuote '\''> ) (${ Id.VSub_Name dirs_default) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals ']\n'> <Id.Char_Literals '[i:ignore-errors?Omit inaccessible files and directory error messages.]\n' > <Id.Char_Literals '[k:keep?Directories to retain in the database; used to override\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals --nocrossdevice> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. If any of the paths are symbolic links then they\n'> <Id.Char_Literals '\tare followed. If the first '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then the default list\n'> <Id.Char_Literals '\tis appended.]:["dir1 dir2 ...":='> ] right: <Id.Right_SingleQuote '\''> ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name keep_default> var_name: keep_default suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\|'> ch:'|')} replace: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '> ch:' ')} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals ']\n'> <Id.Char_Literals '[l:local?Do not descend into non-local filesystem directories.]\n' > <Id.Char_Literals '[r:netpaths?Network directories to include in the database. Currently\n' > <Id.Char_Literals '\tequivalent to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --localpaths> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]:["dir1 dir2 ..."]\n'> <Id.Char_Literals '[p:prunepaths|drop?Directories to exclude from the database. If the first ' > <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tis '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then the default list is appended.]:\n'> <Id.Char_Literals '\t["dir1 dir2 ...":='> ] right: <Id.Right_SingleQuote '\''> ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name drop_default> var_name: drop_default suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\|'> ch:'|')} replace: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '> ch:' ')} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals ']\n'> <Id.Char_Literals '[o:output|codes?The path of the generated database.]:[dbfile:=' > ] right: <Id.Right_SingleQuote '\''> ) (${ Id.VSub_Name codes_default) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals ']\n'> <Id.Char_Literals '[P:public?Omit files that are not publicly readable and directories that\n' > <Id.Char_Literals '\tare not publicly searchable.]\n'> <Id.Char_Literals '[u:user|netuser?The user id used to search directories.]:[user]\n' > <Id.Char_Literals '[m:dir-format?Generate a database similar to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --gnu-format> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', except that\n'> <Id.Char_Literals '\tdirectories are marked for efficient implementations of ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals find> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)\n'> <Id.Char_Literals '\tand '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tw> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1). This is the default database format.]\n'> <Id.Char_Literals '[g:gnu-format?Generate a machine independent gnu '> <Id.Char_OneChar '\\b'> <Id.Char_Literals locate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) compatible\n'> <Id.Char_Literals '\tdatabase.]\n'> <Id.Char_Literals '[O:old-format?Generate a database compatible with the obsolete\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals fastfind> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1). This format has a machine dependent encoding.]\n'> <Id.Char_Literals '[D:depth?Limit the directory traversal depth to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals level> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]#[level]\n'> <Id.Char_Literals '[X!:crossdevice?Retain subdirectories that cross device boundaries.]\n' > <Id.Char_Literals '[n:show?Show the underlying the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tw> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command but do not execute.]\n'> <Id.Char_Literals '[+FILES]{[+'> ] right: <Id.Right_SingleQuote '\''> ) (${ Id.VSub_Name codes_default) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '?Default locate database on '> <Id.Char_OneChar '\\b'> <Id.Unknown_Backslash '\\'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]}\n'> <Id.Char_Literals '[+CAVEATS?If you run '> <Id.Char_OneChar '\\b'> <Id.Char_Literals updatedb> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' as root then protected directory\n'> <Id.Char_Literals '\tcontents may be visible to everyone via the database. Use the\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals --public> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' option to limit the database to publically visible\n'> <Id.Char_Literals '\tfiles and directories.]\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals locate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals fastfind> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals find> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nis> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tw> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: { (DQ < 'aiglnOPXd:[\'dir1 dir2 ...\']k:[\'dir1 dir2 ...\']o:[dbfile]p:[\'dir1 dir2 ...\']r:[\'dir1 dir2 ...\']u:[user]D:[level]' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'OPTIND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTIND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIND='> name:OPTIND) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} {(SQ <'-?'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'cross='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cross='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cross='> name:cross) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'depth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'depth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'depth='> name:depth) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dirs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirs='> name:dirs) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'drop='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'drop='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'drop='> name:drop) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'format='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'format='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'format='> name:format) op: assign_op.Equal rhs: {(DQ <->)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep='> name:keep) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'options='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'options='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options) op: assign_op.Equal rhs: {(DQ <-P>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'output='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'output='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'output='> name:output) op: assign_op.Equal rhs: {(DQ <->)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'public='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'public='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'public='> name:public) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'show='> name:show) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'su='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'su='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'su='> name:su) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName OPT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <a> pattern: (pat.Words words:[{<a>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dirs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirs='> name:dirs) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName dirs) <' '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <ypcat> more_env: [] words: [{<ypcat>} {<auto.home>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,.*/,-d /home/,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>} {<'/home'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,^,-d /home/,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>} {<r>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName OPTARG)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'+'>)} {(DQ <'+ '>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dirs_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirs_default='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dirs_default='> name: dirs_default ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName OPTARG)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName dir)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Other '+'> pattern: (pat.Words words:[{<Id.Lit_Other '+'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dirs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dirs='> name: dirs ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName dirs) <' -d '> ($ Id.VSub_DollarName dir) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <g> pattern: (pat.Words words:[{<g>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'format='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'format='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'format='> name:format) op: assign_op.Equal rhs: {<gnu>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <i> pattern: (pat.Words words:[{<i>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'options='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'options='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName options) <' -i'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <k> pattern: (pat.Words words:[{<k>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName OPTARG)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'+'>)} {(DQ <'+ '>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep_default='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'keep_default='> name: keep_default ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName OPTARG)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName dir)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Other '+'> pattern: (pat.Words words:[{<Id.Lit_Other '+'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'keep='> name: keep ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName keep) <'|'> ($ Id.VSub_DollarName dir) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'keep='> name: keep ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName dir))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <l> pattern: (pat.Words words:[{<l>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'options='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'options='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName options) <' -l'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <m> pattern: (pat.Words words:[{<m>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'format='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'format='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'format='> name:format) op: assign_op.Equal rhs: {(DQ <->)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <o> pattern: (pat.Words words:[{<o>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'output='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'output='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'output='> name:output) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'show='> name:show) op: assign_op.Equal rhs: {(DQ <'print --'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <p> pattern: (pat.Words words:[{<p>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName OPTARG)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'+'>)} {(DQ <'+ '>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'drop_default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'drop_default='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'drop_default='> name: drop_default ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName OPTARG)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName dir)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Other '+'> pattern: (pat.Words words:[{<Id.Lit_Other '+'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName drop)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'drop='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'drop='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'drop='> name: drop ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName drop) <'|'> ($ Id.VSub_DollarName dir) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'drop='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'drop='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'drop='> name: drop ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName dir))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <u> pattern: (pat.Words words:[{<u>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'su='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'su='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'su='> name:su) op: assign_op.Equal rhs: {(DQ <'su '> ($ Id.VSub_DollarName OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <D> pattern: (pat.Words words:[{<D>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'depth='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'depth='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'depth='> name:depth) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <O> pattern: (pat.Words words:[{<O>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'format='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'format='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'format='> name:format) op: assign_op.Equal rhs: {<old>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <P> pattern: (pat.Words words:[{<P>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'public='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'public='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'public='> name:public) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <X> pattern: (pat.Words words:[{<X>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cross='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cross='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cross='> name:cross) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {($ Id.VSub_DollarName OPTIND) <-1>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName dirs_default)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'dirs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirs='> name:dirs) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName dirs) <' -d '> ($ Id.VSub_DollarName dir))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName drop_default)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName drop)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'drop='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'drop='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'drop='> name:drop) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName dir))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'drop='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'drop='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'drop='> name:drop) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName drop) <'|'> ($ Id.VSub_DollarName dir))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName keep_default)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep='> name:keep) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName dir))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep='> name:keep) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName keep) <'|'> ($ Id.VSub_DollarName dir))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'follow='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'follow='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'follow='> name:follow) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'alt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'alt='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'alt='> name:alt) op: assign_op.Equal rhs: {(DQ <'\n'> <'\t\t'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sep='> name:sep) op: assign_op.Equal rhs: {(DQ <'\n'> <'\t'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName public)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName skip)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName skip) <' ||'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name skip) (${ Id.VSub_Name alt) <'!(mode & \'o+r\') ||'> (${ Id.VSub_Name alt) <'type == DIR &&'> (${ Id.VSub_Name alt) <'!(mode & \'o+x\')'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName depth)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName skip)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName skip) <' ||'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name skip) (${ Id.VSub_Name alt) <'level > '> ($ Id.VSub_DollarName depth) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cross)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName skip)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName skip) <' ||'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name skip) (${ Id.VSub_Name alt) <'fstype != \'/\'.fstype'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name skip) <' &&'> (${ Id.VSub_Name alt) <'path != \'('> ($ Id.VSub_DollarName keep) <')?(/*)\''> ) } ) ] redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName drop)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName skip)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName skip) <' ||'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip='> name:skip) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name skip) (${ Id.VSub_Name alt) <'path == \'('> ($ Id.VSub_DollarName drop) <')?(/*)\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expr='> name:expr) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName skip)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expr='> name:expr) op: assign_op.Equal rhs: { (DQ <'if ('> (${ Id.VSub_Name skip) (${ Id.VSub_Name alt) <')'> (${ Id.VSub_Name alt) <'\tstatus = SKIP;'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName expr)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expr='> name:expr) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name expr) (${ Id.VSub_Name sep) <'else '>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expr='> name:expr) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name expr) <'if ('> (${ Id.VSub_Name alt) <'type == LNK &&'> (${ Id.VSub_Name alt) <'level < 3 &&'> (${ Id.VSub_Name alt) <'path == \'('> ($ Id.VSub_DollarName keep) <')?(/*)\''> (${ Id.VSub_Name alt) <')'> (${ Id.VSub_Name alt) <'\tstatus = FOLLOW;'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName expr)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName show)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expr='> name:expr) op: assign_op.Equal rhs: { (DQ <-e> (${ Id.VSub_Name sep) (${ Id.VSub_Name expr) (${ Id.VSub_Name sep) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expr='> name:expr) op: assign_op.Equal rhs: { (DQ <'-e '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Name sep) (${ Id.VSub_Name expr) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Name sep) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {($ Id.VSub_DollarName su)} {<tw>} {($ Id.VSub_DollarName options)} {<-F>} {(DQ ($ Id.VSub_DollarName output))} {<-G>} {(DQ ($ Id.VSub_DollarName format))} {(DQ ($ Id.VSub_DollarName expr))} {($ Id.VSub_DollarName dirs)} ] redirects: [] do_fork: T ) ] )