(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _)} ) ] 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: {<3d>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName RANDOM)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$RANDOM'> pattern: (pat.Words words:[{($ Id.VSub_DollarName RANDOM)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>} {<ksh>} {<3d>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] 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: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] 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.Eof_RParen _> ) } ) 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: 3d (AT&T Labs Research) 2006-10-01 $\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?3d - execute a command with nDFS filesystem services enabled]\n' > <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' executes a dynamically linked '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\twith '> <Id.Char_OneChar '\\a'> <Id.Char_Literals n> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals DFS> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' filesystem services enabled. It intercepts pathname\n'> <Id.Char_Literals '\tsystem calls and applies the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals n> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals DFS> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' operations specified\n'> <Id.Char_Literals '\tby the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals VPATH> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' environment variable, the command line mounts,\n'> <Id.Char_Literals '\tand the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals vpath> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' command. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted then an\n'> <Id.Char_Literals '\tinteractive '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) is started. All processes executed by '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\talso have '> <Id.Char_OneChar '\\a'> <Id.Char_Literals n> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals DFS> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' enabled.]\n'> <Id.Char_Literals '[+?The main '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' service is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals viewpathing> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. A '> <Id.Char_OneChar '\\a'> <Id.Char_Literals viewpath> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' mounts one\n'> <Id.Char_Literals '\tdirectory tree on top of another. Files in the top level\n' > <Id.Char_Literals '\t(directory tree) obscure files in the lower level. Lower level files\n' > <Id.Char_Literals '\thave copy-on-write semantics to the top level. i.e., files in the lower\n' > <Id.Char_Literals '\tlevel are readonly; if a lower level file is modified it is first\n' > <Id.Char_Literals '\tcopied to the top level before modification. Viewpath mounted\n' > <Id.Char_Literals '\tdirectories can be chained. All levels but the top in a chain are\n' > <Id.Char_Literals '\treadonly. The traditional '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'VPATH='> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'd1:d2:d3'> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' viewpathing is\n'> <Id.Char_Literals '\tspecified by the two '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' mounts "'> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'd1 d2'> <Id.Char_OneChar '\\a'> <Id.Char_Literals '" and "'> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'd2 d3'> <Id.Char_OneChar '\\a'> <Id.Char_Literals '".]\n'> <Id.Char_Literals '[+?The following service mounts are initialized by default:]{\n' > <Id.Char_Literals '\t[+/dev/fd?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/dev/fd/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals n> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' refers to the open file descriptor '> <Id.Char_OneChar '\\a'> <Id.Char_Literals n> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\tin the current process.]\n'> <Id.Char_Literals '\t[+/dev/fdp?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/dev/fdp/local/'> <Id.Char_OneChar '\\a'> <Id.Char_Literals service> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' opens a 2-way stream to\n'> <Id.Char_Literals '\t\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals service> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on the local host. The stream supports file\n'> <Id.Char_Literals '\t\tdescriptor exchange.]\n'> <Id.Char_Literals '\t[+/dev/tcp?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/dev/tcp/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals service> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' opens a 2-way\n'> <Id.Char_Literals '\t\tconnection to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals service> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on '> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals inetd> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(8) services\n'> <Id.Char_Literals '\t\tare named either by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals inet.> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals service> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or by port number.]\n'> <Id.Char_Literals '\t[+/dev/udp?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/dev/udb/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals service> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' opens a datagram\n'> <Id.Char_Literals '\t\tconnection to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals service> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on '> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals inetd> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(8) services\n'> <Id.Char_Literals '\t\tare named either by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals inet.> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals service> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or by port number.]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[c:command?Ignored; allows '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to be invoked like '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[d:debug?Set the debug trace level to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals level> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Higher levels produce more\n'> <Id.Char_Literals '\toutput.]#[level]\n'> <Id.Char_Literals '[l:lite?Disable the default service mounts.]\n'> <Id.Char_Literals '[m:mount?Mount the path '> <Id.Char_OneChar '\\a'> <Id.Char_Literals top> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' onto the path '> <Id.Char_OneChar '\\a'> <Id.Char_Literals bottom> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals bottom> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a\n'> <Id.Char_Literals '\tdirectory then the directory '> <Id.Char_OneChar '\\a'> <Id.Char_Literals top> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is viewpathed on top of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals bottom> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.\n'> <Id.Char_Literals '\tOtherwise '> <Id.Char_OneChar '\\a'> <Id.Char_Literals bottom> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' must match a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals fs> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' path of the form\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/#'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals special> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]:["top bottom"]\n'> <Id.Char_Literals '[n!:exec?Execute '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --noexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' shows how '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' would be\n'> <Id.Char_Literals '\tinvoked but does not execute.]\n'> <Id.Char_Literals '[o:output?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals --trace> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --debug> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' output is written to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' instead\n'> <Id.Char_Literals '\tof the standard error.]:[file]\n'> <Id.Char_Literals '[s:shell?Sets the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) executable path to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]:[file:=ksh]\n'> <Id.Char_Literals '[t:trace?If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals id> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then intercepted system calls for all child\n'> <Id.Char_Literals '\tprocesses will be traced. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals id> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is greater than '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then\n'> <Id.Char_Literals '\tintercepted system calls for the current process and all\n' > <Id.Char_Literals '\tchildren will be traced.]#[id]\n'> <Id.Char_Literals '[v:version?Use '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' version '> <Id.Char_OneChar '\\a'> <Id.Char_Literals major.minor> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' instead of the latest\n'> <Id.Char_Literals '\tversion.]:[major.minor]\n'> <Id.Char_Literals '[x:?Passed to the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[+FS PATHS?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals fs> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' paths of the form '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/#'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals special> <Id.Char_OneChar '\\a'> <Id.Char_Literals '['> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '...]]\n'> <Id.Char_Literals '\tcontrol the semantics of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and allow services to be attached to\n'> <Id.Char_Literals '\tthe file namespace. Unsupported '> <Id.Char_OneChar '\\b'> <Id.Char_Literals fs> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' paths are silently ignored. The\n'> <Id.Char_Literals '\tsupported '> <Id.Char_OneChar '\\b'> <Id.Char_Literals fs> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' paths are:]{\n'> <Id.Char_Literals '\t[+/#fd? ]\n'> <Id.Char_Literals '\t[+/#fs/'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '[/'> <Id.Char_OneChar '\\a'> <Id.Char_Literals option> <Id.Char_OneChar '\\a'> <Id.Char_Literals '/...]]? ]\n'> <Id.Char_Literals '\t[+/#map? ]\n'> <Id.Char_Literals '\t[+/#null? ]\n'> <Id.Char_Literals '\t[+/#option? ]{\n'> <Id.Char_Literals '\t\t[+2d? ]\n'> <Id.Char_Literals '\t\t[+3d? ]\n'> <Id.Char_Literals '\t\t[+boundary? ]\n'> <Id.Char_Literals '\t\t[+call='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+count='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+debug='> <Id.Char_OneChar '\\a'> <Id.Char_Literals level> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+dump='> <Id.Char_OneChar '\\b'> <Id.Char_Literals '['> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]? ]{\n'> <Id.Char_Literals '\t\t\t[+call='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t\t[+file='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t\t[+fs='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t\t[+map='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t\t[+mount='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t\t[+safe='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t\t[+state='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t\t[+view='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t}\n'> <Id.Char_Literals '\t\t[+file='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+fork? ]\n'> <Id.Char_Literals '\t\t[+init? ]\n'> <Id.Char_Literals '\t\t[+license='> <Id.Char_OneChar '\\a'> <Id.Char_Literals path> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+mount='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+table='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+test='> <Id.Char_OneChar '\\a'> <Id.Char_Literals bitmask> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+timeout='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+timestamp? ]\n'> <Id.Char_Literals '\t\t[+trace='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '? ]\n'> <Id.Char_Literals '\t\t[+version=1? ]\n'> <Id.Char_Literals '\t}\n'> <Id.Char_Literals '\t[+/#pwd? ]\n'> <Id.Char_Literals '\t[+/#safe? ]\n'> <Id.Char_Literals '\t[+/#view? ]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[+DETAILS?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals n> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals DFS> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' semantics are applied by intercepting system calls with\n' > <Id.Char_Literals '\ta dll that is preloaded at process startup before '> <Id.Char_OneChar '\\a'> <Id.Char_Literals main> <Id.Char_OneChar '\\a'> <Id.Char_Literals '() is called.\n'> <Id.Char_Literals '\tThe interception mechanism may involve the environment on some systems;\n' > <Id.Char_Literals '\tin those cases commands like '> <Id.Char_OneChar '\\b'> <Id.Char_Literals env> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) that clear the enviroment\n'> <Id.Char_Literals '\tbefore execution may defeat the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' intercepts. The intercepted\n'> <Id.Char_Literals '\tsystem calls are listed by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'vpath - /#option/dump=call'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Note that\n'> <Id.Char_Literals '\timplementation system call names may differ from those listed in\n' > <Id.Char_Literals '\tsection 2 of the manual; '> <Id.Char_OneChar '\\b'> <Id.Char_Literals stat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(2) is especially vulnerbale to\n'> <Id.Char_Literals '\tmangling.]\n'> <Id.Char_Literals '[+?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ignores calls not present in a particular host system. In addition,\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' only works on dynamically linked executables that have neither\n' > <Id.Char_Literals '\tset-uid nor set-gid permissions. It may not have the intended effect\n' > <Id.Char_Literals '\ton programs written in a language or linked with a language runtime\n' > <Id.Char_Literals '\tthat hides or mangles system call library symbols, or that\n' > <Id.Char_Literals '\tdirectly emit system call instruction sequences rather than using\n' > <Id.Char_Literals '\tthe corresponding library functions, or that dynamically link\n' > <Id.Char_Literals '\tlibraries outside of the scope of the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' intercepts.]\n'> <Id.Char_Literals '[+?Multi-process client-server applications may misbehave if the ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tenvironment between the related processes is not kept in sync.]\n' > <Id.Char_Literals '\n'> <Id.Char_Literals '[ command [ arg ... ] ]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+ENVIRONMENT?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is implemented by four components: the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' script,\n'> <Id.Char_Literals '\tlocated on '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '; the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' dll (shared library), located either\n'> <Id.Char_Literals '\ton '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or in one of the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '../lib'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '* directories on '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ',\n'> <Id.Char_Literals '\tdepending on local compilation system conventions; and the ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals 2d> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) alias and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _2d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) function that allow commands\n'> <Id.Char_Literals '\tto be run with '> <Id.Char_OneChar '\\a'> <Id.Char_Literals n> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals DFS> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' semantics disabled. Systems like\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals sgi.mips3> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' that support multiple a.out formats may have multiple\n' > <Id.Char_Literals '\tversions of the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' dll. In all cases the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' script handles\n'> <Id.Char_Literals '\tthe dll search.]\n'> <Id.Char_Literals '[+EXAMPLES?]{\n'> <Id.Char_Literals '\t[+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$ 3d]\n'> <Id.Char_Literals '\t[+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$ VPATH=$INSTALLROOT::$PACKAGEROOT 3d]\n'> <Id.Char_Literals '\t[+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$ 3d ls -l]\n'> <Id.Char_Literals '\t[+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$ 2d ls -l]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals env> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ie> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals trace> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals stat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(2)]\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: {(SQ <'clnxd:m:o:s:t:v:[ command [ arg ... ] ]'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<.>} {<-ef>} {(DQ ($ Id.VSub_DollarName PWD))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'PWD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PWD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PWD='> name:PWD) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (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_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/3d'>}]) 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_Number 0)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_Number 0)} ) ] 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 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <whence> more_env: [] words: [{<whence>} {<3d>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <whence> more_env: [] words: [{<whence>} {<-p>} {($ Id.VSub_DollarName dir)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dir> var_name: dir suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dir> var_name: dir suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PWD) <'/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dir> var_name: dir suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'abi='> name:abi) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dir> var_name: dir suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (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_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/arch/sgi.mips'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {<'/lib32'>} {<-o>} {<-d>} {<'/lib64'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dir> var_name: dir suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<-> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name d> var_name: d suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Other '?'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [a] iterable: (for_iter.Words words: [ {<2> <Id.Lit_Colon ':'>} {<3> <Id.Lit_Colon ':'> <N32>} {<4> <Id.Lit_Colon ':'> <64>} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <':'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<':'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName d) ($ Id.VSub_DollarName a)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName abi) <' '> ($ Id.VSub_DollarName d) ($ Id.VSub_DollarName a) <':'> ($ Id.VSub_DollarName t) ) } ) ] redirects: [] ) ] spids: [1068 1078] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [996 1011] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cflag='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cflag='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cflag='> name:cflag) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'full='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'full='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'full='> name:full) op: assign_op.Equal rhs: { (DQ < '/dev/fdp/local/nam/user /#fs/nam/name/unique /dev/fdp /#nam /dev/tcp /#nam /dev/udp /#nam /dev/fd /#fd' > ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'mount='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mount='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mount='> name:mount) op: assign_op.Equal rhs: {(DQ <'- -'>)} ) ] 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: (rhs_word__Empty) ) ] 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: (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 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: {($ Id.VSub_DollarName SHELL)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'trace='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'trace='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'trace='> name:trace) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'version='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'version='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'version='> name:version) 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 VPATH)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ifs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifs='> name:ifs) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name IFS> var_name: IFS suffix_op: (suffix_op.Unary op: <Id.VTest_Hyphen _> arg_word: {(SQ <'\n'> <'\t '>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [a] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName VPATH)}]) 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 a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )} {<->}]) 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 o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )} {<->}]) 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 'mount='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mount='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mount='> name: mount ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName mount) <' '> ($ Id.VSub_DollarName o) <' '> ($ Id.VSub_DollarName a) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<grab>} {<the>} {<options>}] redirects: [] do_fork: T ) (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: <c> pattern: (pat.Words words:[{<c>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'cflag='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cflag='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cflag='> name:cflag) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword:<Id.ControlFlow_Break break>) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'trace='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'trace='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'trace='> name:trace) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName trace) <'/debug='> ($ Id.VSub_DollarName OPTARG) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <l> pattern: (pat.Words words:[{<l>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'full='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'full='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'full='> name:full) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <m> pattern: (pat.Words words:[{<m>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mount='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mount='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mount='> name:mount) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName mount) <' '> ($ 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 -u2 --'>)} ) ] 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: <s> pattern: (pat.Words words:[{<s>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <t> pattern: (pat.Words words:[{<t>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'trace='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'trace='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'trace='> name:trace) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName trace) <'/trace='> ($ Id.VSub_DollarName OPTARG) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <v> pattern: (pat.Words words:[{<v>}]) 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: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'version='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'version='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'version='> name: version ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] 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 'version='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'version='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'version='> name: version ) op: assign_op.Equal rhs: {<.> ($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <x> pattern: (pat.Words words:[{<x>}]) 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) <' -'> ($ Id.VSub_DollarName OPT))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>})] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<x>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {($ Id.VSub_DollarName OPTIND)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cflag)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {<-c>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] 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 full)}) 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 'mount='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mount='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mount='> name:mount) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName full) <' '> ($ Id.VSub_DollarName mount))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'mount='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mount='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mount='> name:mount) op: assign_op.Equal rhs: {(DQ <'- /#option/3d'> ($ Id.VSub_DollarName trace) <' '> ($ Id.VSub_DollarName mount))} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName output)}) 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 'mount='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mount='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mount='> name:mount) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName output) <' /#fs/option '> ($ Id.VSub_DollarName mount)) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'default='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'default='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'default='> name:default) op: assign_op.Equal rhs: {($ Id.VSub_DollarName version)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName version)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <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.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getconf> more_env: [] words: [{<getconf>} {<LIBPREFIX>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <getconf> more_env: [] words: [{<getconf>} {<LIBPATH>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name d> var_name: d suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <','>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name d> var_name: d suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<':'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <getconf> more_env: [] words: [{<getconf>} {<LIBPREFIX>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <getconf> more_env: [] words: [{<getconf>} {<LIBSUFFIX>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] spids: [1531 1544] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: {<lib>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {<lib>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: {(SQ <'.s[lo]'>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName d) <'/'> (${ Id.VSub_Name p) <3d> (${ Id.VSub_Name s) ($ Id.VSub_DollarName version) } {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName d) <'/'> (${ Id.VSub_Name p) <3d> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name version> var_name: version suffix_op: (suffix_op.PatSub pat: {<.>} replace: {} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) (${ Id.VSub_Name s) } ] ) 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 x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/'> (${ Id.VSub_Name p) <3d> (${ Id.VSub_Name s) <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <'/'> (${ Id.VSub_Name p) <3d> ($ Id.VSub_Star '*') <Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> (${ Id.VSub_Name s) } ] ) 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 'version='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'version='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'version='> name: version ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'exp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName version))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName dir) <'/3d'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/3d'>} ) ] redirects: [] ) ] spids: [1727 1737] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {<Id.Lit_Colon ':'> ($ Id.VSub_DollarName FPATH) <Id.Lit_Colon ':'>} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName dir) <'/fun'> <Id.Lit_Colon ':'> <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.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'FPATH='> ($ Id.VSub_DollarName dir) <'/fun'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name FPATH> var_name: FPATH suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<':'> ($ Id.VSub_DollarName FPATH)} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] 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.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'>} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName dir) <'/bin'> <Id.Lit_Colon ':'> <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.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'PATH='> ($ Id.VSub_DollarName dir) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'exp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName exp) <' LD_PRELOAD='> ($ Id.VSub_DollarName version))} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName abi) <Id.Lit_Colon ':'> <-> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName version) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName dir) <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name version> var_name: version suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName dir) <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [a] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName abi)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<':'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <':'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'exp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName exp) <' _RLD'> (${ Id.VSub_Name a) <'_LIST='> ($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_DollarName v) <':DEFAULT'> ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) 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 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name version> var_name: version suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name version> var_name: version suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <.>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(${ Id.VSub_Name v) <-n32.> ($ Id.VSub_DollarName s)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName exp) <' _RLD64_LIST='> ($ Id.VSub_DollarName version) <':DEFAULT _RLDN32_LIST='> ($ Id.VSub_DollarName version) <-n32.> ($ Id.VSub_DollarName s) <':DEFAULT _RLD_LIST='> (${ Id.VSub_Name v) <-o32.> ($ Id.VSub_DollarName s) <':DEFAULT'> ) } ) ] redirects: [] ) ] spids: [1935 1948] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(${ Id.VSub_Name v) <-64.> ($ Id.VSub_DollarName s)} {<-o>} {<-f>} {(${ Id.VSub_Name v) <-o32.> ($ Id.VSub_DollarName s)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName exp) <' _RLD64_LIST='> ($ Id.VSub_DollarName version) <-64.> ($ Id.VSub_DollarName s) <':DEFAULT _RLDN32_LIST='> ($ Id.VSub_DollarName version) <':DEFAULT _RLD_LIST='> (${ Id.VSub_Name v) <-o32.> ($ Id.VSub_DollarName s) <':DEFAULT'> ) } ) ] redirects: [] ) ] spids: [1969 1992] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName exp) <' _RLD_LIST='> ($ Id.VSub_DollarName version) <':DEFAULT'> ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(${ Id.VSub_Name dir) <'/lib/libdir64.'> ($ Id.VSub_DollarName s)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName exp) <':'> (${ Id.VSub_Name dir) <'/lib/libdir64.'> ($ Id.VSub_DollarName s) ) } ) ] redirects: [] ) ] spids: [2027 2040] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {($ Id.VSub_DollarName exp)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mount)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike '__='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name mount> var_name: mount suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{(SQ <' '>)}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] 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: <unset> more_env: [] words: [{<unset>} {<__>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<VPATH>}] redirects: [] do_fork: T ) ] spids: [1715 1725] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName version) <': no shared library'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName default)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <'*'>)}]) 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.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'version='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'version='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'version='> name:version) 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: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName SHELL)}) 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 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <whence> more_env: [] words: [{<whence>} {<ksh>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <whence> more_env: [ (EnvPair left: <Id.Lit_VarLike 'PATH='> name: PATH val: {($ Id.VSub_DollarName dir) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ) ] words: [{<whence>} {<-p>} {($ Id.VSub_DollarName t)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SHELL> var_name: SHELL suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName shell)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SHELL> var_name: SHELL suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <bin> <Id.Lit_Slash '/'> <sh>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<SHELL>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <vpath> more_env: [] words: [{<vpath>} {<'/'> <Id.Lit_Pound '#'> <'option/3d'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/2d'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<vpath>} {($ Id.VSub_DollarName mount)}] redirects: [] do_fork: T ) ] 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_Number 1) <Id.Lit_Colon ':'> ($ Id.VSub_Pound '#') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName options) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName SHELL) <' '> ($ Id.VSub_DollarName options))} ) ] 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 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <whence> more_env: [] words: [{<whence>} {($ Id.VSub_Number 1)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <whence> more_env: [] words: [{<whence>} {<-p>} {($ Id.VSub_DollarName t)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )} {(DQ <'\'\''>)} {(SQ <'""'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName SHELL) <' '> ($ Id.VSub_DollarName options))} ) ] 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 'shell='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] 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 show)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>} {($ Id.VSub_DollarName shell)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] 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 version)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike '__='> (DQ <'\''> ($ Id.VSub_DollarName __) <'\''>)} {<exec>} {($ Id.VSub_DollarName shell)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] 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: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike '__='> (DQ <'\''> ($ Id.VSub_DollarName __) <'\''>)} {($ Id.VSub_DollarName exp)} {<exec>} {($ Id.VSub_DollarName shell)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] )