(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<regress>} {<->} {<run>} {<regression>} {<tests>} {<Id.KW_In in>} {<command.tst>} ] redirects: [] do_fork: T ) (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: {<regress>} ) ] 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 '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: regress (AT&T Research) 2012-02-02 $\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?regress - run regression tests]\n'> <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals regress> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' runs the tests in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', or\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tst> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' does not exist. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted\n'> <Id.Char_Literals ' then it is assumed to be the base name of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. All testing is done\n'> <Id.Char_Literals ' in the temporary directory '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tmp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[+?Default test output lists the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals number> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\a'> <Id.Char_Literals description> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' for\n'> <Id.Char_Literals ' each active '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TEST> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' group and the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals number> <Id.Char_OneChar '\\a'> <Id.Char_Literals ':'> <Id.Char_OneChar '\\a'> <Id.Char_Literals line> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' for each\n'> <Id.Char_Literals ' individual '> <Id.Char_OneChar '\\b'> <Id.Char_Literals EXEC> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' test. Each test that fails results in a diagnostic\n'> <Id.Char_Literals ' that contains the word '> <Id.Char_OneChar '\\b'> <Id.Char_Literals FAILED> <Id.Char_OneChar '\\b'> <Id.Char_Literals '; no other diagnostics contain this\n'> <Id.Char_Literals ' word.]\n'> <Id.Char_Literals '[b:ignore-space?Ignore space differences when comparing expected\n' > <Id.Char_Literals ' output.]\n'> <Id.Char_Literals '[i:pipe-input?Repeat each test with the standard input redirected through a\n' > <Id.Char_Literals ' pipe.]\n'> <Id.Char_Literals '[k:keep?Enable '> <Id.Char_OneChar '\\b'> <Id.Char_Literals core> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' dumps, exit after the first test that fails,\n'> <Id.Char_Literals ' and do not remove the temporary directory '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tmp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[l:local-fs?Force '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tmp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to be in a local filesystem.]\n'> <Id.Char_Literals '[o:pipe-output?Repeat each test with the standard output redirected through\n' > <Id.Char_Literals ' a pipe.]\n'> <Id.Char_Literals '[p:pipe-io?Repeat each test with the standard input and standard output\n' > <Id.Char_Literals ' redirected through pipes.]\n'> <Id.Char_Literals '[q:quiet?Output information on '> <Id.Char_OneChar '\\b'> <Id.Char_Literals FAILED> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' tests only.]\n'> <Id.Char_Literals '[r!:regular?Run each test with the standard input and standard output\n' > <Id.Char_Literals ' redirected through regular files.]\n'> <Id.Char_Literals '[t:test?Run only tests matching '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Tests are numbered and\n'> <Id.Char_Literals ' consist of at least two digits (0 filled if necessary.) Tests matching\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '+(0)'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are always run.]:[pattern]\n'> <Id.Char_Literals '[x:trace?Enable debug tracing.]\n'> <Id.Char_Literals '[v:verbose?List differences between actual (<) and expected (>) output,\n' > <Id.Char_Literals ' errors and exit codes. Also disable long output line truncation.]\n' > <Id.Char_Literals '\n'> <Id.Char_Literals 'unit [ command [ arg ... ] ]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+INPUT FILES?The regression test file '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tst> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)\n'> <Id.Char_Literals ' script that is executed in an environment with the following functions\n' > <Id.Char_Literals ' defined:]\n'> <Id.Char_Literals ' {\n'> <Id.Char_Literals ' [+BODY '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '{ ... }?Defines the test body; used for complex tests.]\n' > <Id.Char_Literals ' [+CD '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Create and change to working directory for\n'> <Id.Char_Literals ' one test.]\n'> <Id.Char_Literals ' [+CLEANUP '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals status> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Called at exit time to remove the\n'> <Id.Char_Literals ' temporary directory '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tmp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', list the tests totals via\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TALLY> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', and exit with status '> <Id.Char_OneChar '\\a'> <Id.Char_Literals status> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+COMMAND '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?Runs the current command under test with\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... appended to the default args.]\n'> <Id.Char_Literals ' [+CONTINUE?The background job must be running.]\n' > <Id.Char_Literals ' [+COPY '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'from to'> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Copy file '> <Id.Char_OneChar '\\a'> <Id.Char_Literals from> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals to> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals from> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may\n'> <Id.Char_Literals ' be a regular file or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals INPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals OUTPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ERROR> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Post\n'> <Id.Char_Literals ' test comparisons are still done for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals from> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+DIAGNOSTICS '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' | '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 0> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' | '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?No argument or an\n'> <Id.Char_Literals '\t argument of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' declares that diagnostics are to expected for\n'> <Id.Char_Literals '\t the remainder of the current '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TEST> <Id.Char_OneChar '\\b'> <Id.Char_Literals '; '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 0> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' reverts to the default\n'> <Id.Char_Literals ' state that diagnostics are not expected; otherwise the argument\n' > <Id.Char_Literals '\t is a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) pattern that must match the non-empty contents\n'> <Id.Char_Literals '\t of the standard error.]\n'> <Id.Char_Literals ' [+DO '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals statement> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Defines additional statements to be executed\n'> <Id.Char_Literals ' for the current test. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals statement> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be a { ... } group.]\n'> <Id.Char_Literals ' [+EMPTY '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'INPUT|OUTPUT|ERROR|SAME?The corresponding file is\n'> <Id.Char_Literals ' expected to be empty.]\n'> <Id.Char_Literals ' [+ERROR '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -e> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals filter> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -n> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' | - '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?The\n'> <Id.Char_Literals '\t standard error is expected to match either the contents\n' > <Id.Char_Literals '\t of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or the line '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'ERROR -n'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' does not\n'> <Id.Char_Literals '\t append a newline to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals filter> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a shell command\n'> <Id.Char_Literals '\t or pipeline that reads standard input and writes standard\n' > <Id.Char_Literals '\t output that is applied to ERROR before comparison with the\n' > <Id.Char_Literals '\t expected contents.]\n'> <Id.Char_Literals ' [+EXEC '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?Runs the command under test with\n'> <Id.Char_Literals ' optional arguments. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals INPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals OUTPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ERROR> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals EXIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals SAME> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' calls following this '> <Id.Char_OneChar '\\b'> <Id.Char_Literals EXEC> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' up until the next\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals EXEC> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or the end of the script provide details for the\n'> <Id.Char_Literals ' expected results. If no arguments are specified then the\n' > <Id.Char_Literals ' arguments from the previious '> <Id.Char_OneChar '\\b'> <Id.Char_Literals EXEC> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' in the current '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TEST> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' group are used, or no arguments if this is the first ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals EXEC> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' in the group.]\n'> <Id.Char_Literals ' [+EXIT '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals status> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?The command exit status is expected to match\n'> <Id.Char_Literals ' the pattern '> <Id.Char_OneChar '\\a'> <Id.Char_Literals status> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+EXITED?The background job must have exited.]\n' > <Id.Char_Literals ' [+EXPORT '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[-]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?Export environment\n'> <Id.Char_Literals ' variables for one test.]\n'> <Id.Char_Literals ' [+FATAL '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals message> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals message> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is printed on the standard\n'> <Id.Char_Literals ' error and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals regress> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' exits with status '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+FIFO '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'INPUT|OUTPUT|ERROR'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -n> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' | - '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?The\n'> <Id.Char_Literals '\t '> <Id.Char_OneChar '\\b'> <Id.Char_Literals IO> <Id.Unknown_Backslash '\\'> <Id.Char_Literals 'B file is a fifo.]\n'> <Id.Char_Literals ' [+IF '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals note> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]?If the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' exits\n'> <Id.Char_Literals ' 0 then tests until the next '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ELIF> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ELSE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals FI> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are\n'> <Id.Char_Literals ' enabled. Otherwise those tests are skipped. ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals IF> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ... '> <Id.Char_OneChar '\\b'> <Id.Char_Literals FI> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' may be nested, but must not cross '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TEST> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' boundaries. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals note> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' is listed on the standard error if the correspoding test block\n' > <Id.Char_Literals ' is enabled; '> <Id.Char_OneChar '\\b'> <Id.Char_Literals IF> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ELIF> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ELSE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' may nave a '> <Id.Char_OneChar '\\a'> <Id.Char_Literals note> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' operand.]\n'> <Id.Char_Literals ' [+IGNORE '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is ignored for subsequent result\n'> <Id.Char_Literals ' comparisons. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be '> <Id.Char_OneChar '\\b'> <Id.Char_Literals OUTPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ERROR> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+IGNORESPACE?Ignore space differences when comparing expected\n' > <Id.Char_Literals ' output.]\n'> <Id.Char_Literals ' [+INCLUDE '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?One or more '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' operands are read\n'> <Id.Char_Literals ' via the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals VIEW> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is used to locate\n'> <Id.Char_Literals ' the files.]\n'> <Id.Char_Literals ' [+INFO '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals description> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals description> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is printed on the\n'> <Id.Char_Literals ' standard error.]\n'> <Id.Char_Literals ' [+INITIALIZE?Called by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals regress> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to initialize a each\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TEST> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' group.]\n'> <Id.Char_Literals ' [+INPUT '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -e> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals filter> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -n> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' | - '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?The\n'> <Id.Char_Literals '\t standard input is set to either the contents of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t or the line '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'INPUT -n'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' does not append a newline\n'> <Id.Char_Literals '\t to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals filter> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a shell command or pipeline that\n'> <Id.Char_Literals '\t reads standard input and writes standard output that is\n' > <Id.Char_Literals '\t applied to OUTPUT before comparison with the expected contents.]\n' > <Id.Char_Literals ' [+INTRO?Called by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals regress> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to introduce all '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TEST> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' groups.]\n'> <Id.Char_Literals ' [+IO '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals FIFO> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' | '> <Id.Char_OneChar '\\b'> <Id.Char_Literals PIPE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'INPUT|OUTPUT|ERROR'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -e> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals filter> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -n> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' | - '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?Internal\n'> <Id.Char_Literals ' support for the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals INPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals OUTPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ERROR> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' functions.]\n'> <Id.Char_Literals ' [+JOB '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals op> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ ... ]]?Like '> <Id.Char_OneChar '\\b'> <Id.Char_Literals EXEC> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' except the command is run\n'> <Id.Char_Literals ' as a background job for the duration of the group or until it\n' > <Id.Char_Literals ' is killed via '> <Id.Char_OneChar '\\b'> <Id.Char_Literals KILL> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+KEEP '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?The temporary directory is cleared for\n'> <Id.Char_Literals ' each test. Files matching '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' are retained between\n'> <Id.Char_Literals ' tests.]\n'> <Id.Char_Literals ' [+KILL '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals signal> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Kill the background job with '> <Id.Char_OneChar '\\a'> <Id.Char_Literals signal> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals SIGKILL> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]].]\n'> <Id.Char_Literals ' [+MOVE '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'from to'> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Rename file '> <Id.Char_OneChar '\\a'> <Id.Char_Literals from> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals to> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals from> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may\n'> <Id.Char_Literals ' be a regular file or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals INPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals OUTPUT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ERROR> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Post\n'> <Id.Char_Literals ' test comparisons are ignored for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals from> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+NOTE '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals comment> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals comment> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is added to the current test\n'> <Id.Char_Literals ' trace output.]\n'> <Id.Char_Literals ' [+OUTPUT '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -e> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals filter> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -n> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' | - '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?The\n'> <Id.Char_Literals '\t standard output is expected to match either the contents\n' > <Id.Char_Literals '\t of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or the line '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'OUTPUT -n'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' does not\n'> <Id.Char_Literals '\t append a newline to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals filter> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is a shell command\n'> <Id.Char_Literals '\t or pipeline that reads standard input and writes standard\n' > <Id.Char_Literals '\t output that is applied to ERROR before comparison with the\n' > <Id.Char_Literals '\t expected contents.]\n'> <Id.Char_Literals ' [+PIPE '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'INPUT|OUTPUT|ERROR'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -n> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' | - '> <Id.Char_OneChar '\\a'> <Id.Char_Literals data> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?The\n'> <Id.Char_Literals '\t '> <Id.Char_OneChar '\\b'> <Id.Char_Literals IO> <Id.Unknown_Backslash '\\'> <Id.Char_Literals 'B file is a pipe.]\n'> <Id.Char_Literals ' [+PROG '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is run with\n'> <Id.Char_Literals ' optional arguments.]\n'> <Id.Char_Literals ' [+REMOVE '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... are removed after the\n'> <Id.Char_Literals ' current test is done.]\n'> <Id.Char_Literals ' [+RUN?Called by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals regress> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to run the current test.]\n'> <Id.Char_Literals ' [+SAME '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'new old'> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals new> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is expected to be the same as\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals old> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' after the current test completes.]\n'> <Id.Char_Literals ' [+SET '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '['> <Id.Char_OneChar '\\b'> <Id.Char_Literals no> <Id.Char_OneChar '\\b'> <Id.Char_Literals ']]'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '[='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]?Set the command line\n'> <Id.Char_Literals ' option --'> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. The setting is in effect for all tests until\n'> <Id.Char_Literals ' the next explicit '> <Id.Char_OneChar '\\b'> <Id.Char_Literals SET> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+TALLY?Called by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals regress> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' display the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TEST> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' results.]\n'> <Id.Char_Literals ' [+TEST '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals number> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals description> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?Define a new test\n'> <Id.Char_Literals ' group labelled '> <Id.Char_OneChar '\\a'> <Id.Char_Literals number> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' with optional '> <Id.Char_OneChar '\\a'> <Id.Char_Literals descripion> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+TITLE '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[+]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals text> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Set the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals TEST> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' output title to\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals text> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then '> <Id.Char_OneChar '\\a'> <Id.Char_Literals text> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is appended to\n'> <Id.Char_Literals ' the default title. The default title is the test file base\n' > <Id.Char_Literals ' name, and, if different from the test file base name, the test\n' > <Id.Char_Literals ' unit base name.]\n'> <Id.Char_Literals ' [+TWD '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?Set the temporary test dir to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.\n'> <Id.Char_Literals ' The default is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tmp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', where '> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is the test\n'> <Id.Char_Literals ' input file sans directory and suffix. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' matches '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/*'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' then it is the directory name; if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is non-null then the\n'> <Id.Char_Literals ' prefix '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '${TMPDIR:-/tmp}'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is added; otherwise if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dir> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is\n'> <Id.Char_Literals ' omitted then\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '${TMPDIR:-/tmp}/tst-'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_Literals '-$$-$RANDOM.'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals unit> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is\n'> <Id.Char_Literals ' used.]\n'> <Id.Char_Literals ' [+UMASK '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '[ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals mask> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Run subsequent tests with '> <Id.Char_OneChar '\\b'> <Id.Char_Literals umask> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals mask> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals mask> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted then the original '> <Id.Char_OneChar '\\b'> <Id.Char_Literals umask> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is\n'> <Id.Char_Literals ' used.]\n'> <Id.Char_Literals ' [+UNIT '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals arg> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?Define the command and\n'> <Id.Char_Literals ' optional default arguments to be tested. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals UNIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' explicitly\n'> <Id.Char_Literals ' overrides the default command name derived from the test script\n' > <Id.Char_Literals ' file name. A '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' operand with optional arguments\n'> <Id.Char_Literals ' overrides the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals UNIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and arguments, with the\n'> <Id.Char_Literals ' exception that if the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals UNIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '+'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals UNIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' arguments are appended to the operand or default\n'> <Id.Char_Literals ' unit command and arguments.]\n'> <Id.Char_Literals ' [+VIEW '> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals var> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals var> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is set to the full\n'> <Id.Char_Literals ' pathname of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals var> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] in the current '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$VPATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' view if defined.]\n'> <Id.Char_Literals ' }\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh> <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 '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 <'ko:[[no]name[=value]]t:[test]v unit [path [arg ...]]'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <FATAL> name: FATAL body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} {(DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_Star '*'))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'GROUP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GROUP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: {<FINI>} ) ] redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <EMPTY> name: EMPTY body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-n>} {<Id.Lit_VarLike 'ARRAY='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARRAY> var_name: ARRAY prefix_op: <Id.VSub_Bang '!'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <unset> more_env: [] words: [ {<unset>} {<Id.Lit_ArrayLhsOpen 'ARRAY['> ($ Id.VSub_DollarName i) <Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <INITIALIZE> name: INITIALIZE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>} {<j>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(DQ ($ Id.VSub_DollarName TWD))}] redirects: [] do_fork: T ) (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.Simple blame_tok: <RM> more_env: [] words: [{<RM>} {<Id.Lit_Star '*'>}] 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.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{<Id.Lit_Star '*'>}]) 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 i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.ExtGlob_Bang '!('> pattern: (pat.Words words: [ { (word_part.ExtGlob op: <Id.ExtGlob_Bang '!('> arms: [{($ Id.VSub_DollarName KEEP)}] right: <Id.Right_ExtGlob _> ) } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName j) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName j)}) 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.Simple blame_tok: <RM> more_env: [] words: [{<RM>} {($ Id.VSub_DollarName j)}] 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: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INPUT>}) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<OUTPUT.ex>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<ERROR.ex>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'BODY='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BODY='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BODY='> name:BODY) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COPY='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COPY='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COPY='> name:COPY) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DIAGNOSTICS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DIAGNOSTICS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIAGNOSTICS='> name:DIAGNOSTICS) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DONE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DONE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DONE='> name:DONE) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ERROR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ERROR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ERROR='> name:ERROR) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'EXIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT='> name:EXIT) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IGNORE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IGNORE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IGNORE='> name:IGNORE) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'INIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INIT='> name:INIT) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'INPUT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INPUT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MOVE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MOVE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOVE='> name:MOVE) op: assign_op.Equal rhs: {(DQ )} ) ] 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.Simple blame_tok: <EMPTY> more_env: [] words: [{<EMPTY>} {<FILE>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <EMPTY> more_env: [] words: [{<EMPTY>} {<FILTER>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <EMPTY> more_env: [] words: [{<EMPTY>} {<SAME>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <EMPTY> more_env: [] words: [{<EMPTY>} {<TYPE>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <INTRO> name: INTRO body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<base>} {<command>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'base='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'base='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'base='> name:base) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name REGRESS> var_name: REGRESS suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'base='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'base='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'base='> name:base) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name base> var_name: base suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<.tst>}) right: <Id.Right_DollarBrace '}'> ) } ) ] 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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMMAND> var_name: COMMAND suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] 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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name command> var_name: command suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {(SQ <' '>) <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {($ Id.VSub_DollarName TITLE)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'TITLE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TITLE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TITLE='> name:TITLE) 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<Id.Lit_Other '+'>}]) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName command)} right: {($ Id.VSub_DollarName base)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TITLE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TITLE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TITLE='> name: TITLE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName COMMAND)} ) ] redirects: [] ) ] spids: [1654 1667] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TITLE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TITLE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TITLE='> name: TITLE ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName COMMAND) <', '> ($ Id.VSub_DollarName base) ) } ) ] 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.DParen left: <Id.Op_DLeftParen _> child: {($ Id.VSub_Pound '#')} right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] spids: [1686 1696] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: {($ Id.VSub_Pound '#')} right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TITLE)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TITLE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TITLE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TITLE='> name: TITLE ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName TITLE) <', '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] spids: [1722 1731] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TITLE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TITLE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TITLE='> name: TITLE ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-u2>} {(DQ <'TEST\t'> ($ Id.VSub_DollarName TITLE))}] redirects: [] do_fork: T ) ] spids: [1581 1592] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <TALLY> name: TALLY body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<msg>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName GROUP)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <INIT> pattern: (pat.Words words:[{<INIT>}]) 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 'msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg) op: assign_op.Equal rhs: { (DQ <'TEST\t'> ($ Id.VSub_DollarName TITLE) <', '> ($ Id.VSub_DollarName TESTS) <' test'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName TESTS)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) 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 'msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg) op: assign_op.Equal rhs: {(${ Id.VSub_Name msg) <s>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName msg) <', '> ($ Id.VSub_DollarName ERRORS) <' error'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ERRORS)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) 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 'msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg) op: assign_op.Equal rhs: {(${ Id.VSub_Name msg) <s>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: {($ Id.VSub_Pound '#')} right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName msg) <', '> ($ Id.VSub_Star '*'))} ) ] redirects: [] ) ] spids: [1879 1889] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-u2>} {(DQ ($ Id.VSub_DollarName msg))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'GROUP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GROUP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: {<INIT>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TESTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TESTS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TESTS='> name:TESTS) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ERRORS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ERRORS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ERRORS='> name:ERRORS) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <TITLE> name: TITLE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'TITLE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TITLE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TITLE='> name:TITLE) op: assign_op.Equal rhs: {($ Id.VSub_At '@')} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <UNWIND> name: UNWIND body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} { (DQ ($ Id.VSub_DollarName command) <': line '> ($ Id.VSub_DollarName LINE) <': no matching FI for IF on line '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COND_LINE> var_name: COND_LINE bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike COND)) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDMinus child: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} { (DQ <'line '> ($ Id.VSub_DollarName LINE) <': no matching FI for IF on line '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COND_LINE> var_name: COND_LINE bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] spids: [2002 2016] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBPID)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName JOBPID)} right: {<0>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <kill> more_env: [] words: [{<kill>} {<-KILL>} {($ Id.VSub_DollarName JOBPID)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <wait> more_env: [] words: [{<wait>}] redirects: [] do_fork: T ) ] spids: [2061 2074] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBPID='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBPID='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBPID='> name:JOBPID) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [2050 2059] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBSTATUS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBSTATUS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBSTATUS='> name:JOBSTATUS) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBOP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBOP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBOP='> name:JOBOP) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <wait> more_env: [] words: [{<wait>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <CLEANUP> name: CLEANUP body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<note>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {<INIT>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_keep)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName SOURCE)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_local)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <RM> more_env: [] words: [{<RM>} {(${ Id.VSub_Name TEST_local)}] redirects: [] do_fork: T ) ] spids: [2158 2167] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <RM> more_env: [] words: [{<RM>} {(DQ ($ Id.VSub_DollarName TWD))}] redirects: [] do_fork: T ) ] spids: [2140 2151] ) ] else_action: [] 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.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: {($ Id.VSub_Number 1)} right: <Id.Op_DRightParen _> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {<FINI>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'note='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'note='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'note='> name:note) op: assign_op.Equal rhs: {<terminated>} ) ] redirects: [] ) ] spids: [2189 2211] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2125 2138] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <TALLY> more_env: [] words: [{<TALLY>} {($ Id.VSub_DollarName note)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_keep)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <UNWIND> more_env: [] words: [{<UNWIND>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_Number 1)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <RUN> name: RUN body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>} {<Id.Lit_VarLike 'r='> <1>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName UMASK)} right: {($ Id.VSub_DollarName UMASK_ORIG)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <umask> more_env: [] words: [{<umask>} {($ Id.VSub_DollarName UMASK_ORIG)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName GROUP)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <INIT> pattern: (pat.Words words:[{<INIT>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <RM> more_env: [] words: [{<RM>} {(DQ ($ Id.VSub_DollarName TWD))}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_local)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEST_local='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_local='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEST_local='> name: TEST_local ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TMPDIR> var_name: TMPDIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <tmp>} ) right: <Id.Right_DollarBrace '}'> ) <'/rt-'> ($ Id.VSub_Dollar '$') <'/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TWD> var_name: TWD suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName TEST_local))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <ln> more_env: [] words: [ {<ln>} {<-s>} {(DQ ($ Id.VSub_DollarName TEST_local))} {(DQ ($ Id.VSub_DollarName TWD))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {(DQ ($ Id.VSub_DollarName TWD)) <Id.Lit_Colon ':'>} {<cannot>} {<create>} {<directory>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEST_local='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_local='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEST_local='> name: TEST_local ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TEST_local> var_name: TEST_local suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] spids: [2301 2310] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName TWD))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {(DQ ($ Id.VSub_DollarName TWD)) <Id.Lit_Colon ':'>} {<cannot>} {<create>} {<directory>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(DQ ($ Id.VSub_DollarName TWD))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'TWD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TWD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TWD='> name:TWD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PWD)} ) ] redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<rmu>})] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-u>} {<rmu>}] 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 'TEST_rmu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_rmu='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEST_rmu='> name: TEST_rmu ) op: assign_op.Equal rhs: {<-u>} ) ] redirects: [] ) ] spids: [2422 2437] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<rmu>}] redirects: [] do_fork: T ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName UNIT)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ )} {<Id.Lit_LBracket '['> <-> <Id.Lit_Other '+'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <UNIT> more_env: [] words: [ {<UNIT>} {($ Id.VSub_DollarName UNIT)} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) 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: <UNIT> more_env: [] words: [ {<UNIT>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [2453 2462] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <INTRO> more_env: [] words: [{<INTRO>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <FINI> pattern: (pat.Words words:[{<FINI>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$TEST_select'> pattern: (pat.Words words:[{($ Id.VSub_DollarName TEST_select)}]) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName ITEM)} right: {($ Id.VSub_DollarName FLUSHED)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [2553 2566] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'FLUSHED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FLUSHED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLUSHED='> name:FLUSHED) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ITEM)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [2580 2593] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike COUNT) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: {($ Id.VSub_DollarName ITEM)} right: {($ Id.VSub_DollarName LASTITEM)} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LABEL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LABEL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LABEL='> name:LABEL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TEST) <Id.Lit_Pound '#'> ($ Id.VSub_DollarName COUNT) } ) ] redirects: [] ) ] spids: [2610 2624] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LASTITEM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LASTITEM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTITEM='> name:LASTITEM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ITEM)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LABEL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LABEL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LABEL='> name:LABEL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TEST) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName ITEM) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEST_file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST_file='> name:TEST_file) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName INPUT)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName OUTPUT) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName i) <' '>) <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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName i) <.sav>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {($ Id.VSub_DollarName i) <.sav>} {($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'COMPARE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPARE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMPARE='> name: COMPARE ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName COMPARE) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] spids: [2690 2702] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName i)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName i) <.sav>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'COMPARE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPARE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMPARE='> name: COMPARE ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName COMPARE) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] spids: [2720 2731] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> 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: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName OUTPUT)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName COMPARE) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName i) <' '>) <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 'COMPARE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPARE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMPARE='> name: COMPARE ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName COMPARE) <' '> ($ Id.VSub_DollarName i) ) } ) ] 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: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName INIT)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$i'> more_env: [] words: [{($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName TEST)} {<INIT>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName JOBPID)} right: {<0>} ) right: (bool_expr.LogicalOr left: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBPID)}) right: (bool_expr.WordTest w: {($ Id.VSub_DollarName JOBSTATUS)} ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-nu2>} {(DQ ($ Id.VSub_DollarName LABEL))}] redirects: [] do_fork: T ) ] spids: [2867 2878] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <RESULTS> more_env: [] words: [{<RESULTS>}] redirects: [] do_fork: T ) ] spids: [2840 2865] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName BODY)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> 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: {($ Id.VSub_DollarName NOTE)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} {(DQ <'\t'> ($ Id.VSub_DollarName SHOW))} ] redirects: [] do_fork: T ) ] spids: [2910 2921] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName BODY)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$i'> more_env: [] words: [ {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName TEST)} {<BODY>} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [2895 2904] ) ] else_kw: <Id.KW_Else else> else_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: (rhs_word__Empty) ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TYPE> var_name: TYPE bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike INPUT) ) right: <Id.Right_DollarBrace '}'> ) } right: {<PIPE>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TYPE> var_name: TYPE bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike OUTPUT) ) right: <Id.Right_DollarBrace '}'> ) } right: {<PIPE>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-nu2>} {(DQ ($ Id.VSub_DollarName LABEL))} ] redirects: [] do_fork: T ) ] spids: [3004 3015] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName TWD) <'/INPUT'>} ) ] do_fork: T ) (command.Simple blame_tok: <COMMAND> more_env: [] words: [ {<COMMAND>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <RESULTS> more_env: [] words: [{<RESULTS>} {(SQ <'pipe input'>)}] redirects: [] do_fork: T ) ] spids: [2984 3002] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-nu2>} {(DQ ($ Id.VSub_DollarName LABEL))} ] redirects: [] do_fork: T ) ] spids: [3066 3077] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName TWD) <'/INPUT'>} ) ] do_fork: T ) (command.Simple blame_tok: <COMMAND> more_env: [] words: [ {<COMMAND>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <RESULTS> more_env: [] words: [{<RESULTS>} {(SQ <'pipe io'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2964 2982] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TYPE> var_name: TYPE bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike OUTPUT) ) right: <Id.Right_DollarBrace '}'> ) } right: {<PIPE>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-nu2>} {(DQ ($ Id.VSub_DollarName LABEL))}] redirects: [] do_fork: T ) ] spids: [3145 3156] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <COMMAND> more_env: [] words: [ {<COMMAND>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName TWD) <'/INPUT'>} ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <RESULTS> more_env: [] words: [{<RESULTS>} {(SQ <'pipe output'>)}] redirects: [] do_fork: T ) ] spids: [3125 3143] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_regular)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-nu2>} {(DQ ($ Id.VSub_DollarName LABEL))} ] redirects: [] do_fork: T ) ] spids: [3214 3225] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TYPE> var_name: TYPE bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike INPUT) ) right: <Id.Right_DollarBrace '}'> ) } right: {<FIFO>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <COMMAND> more_env: [] words: [ {<COMMAND>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} ) ] do_fork: T ) ] spids: [3239 3257] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <COMMAND> more_env: [] words: [ {<COMMAND>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName TWD) <'/INPUT'>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <RESULTS> more_env: [] words: [{<RESULTS>}] redirects: [] do_fork: T ) ] spids: [3203 3212] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_pipe_input)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-nu2>} {(DQ ($ Id.VSub_DollarName LABEL))} ] redirects: [] do_fork: T ) ] spids: [3317 3328] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ )} {<PIPE>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName TWD) <'/INPUT'>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <COMMAND> more_env: [] words: [ {<COMMAND>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'STATUS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STATUS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'STATUS='> name: STATUS ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Simple blame_tok: <RESULTS> more_env: [] words: [{<RESULTS>} {(SQ <'pipe input'>)}] redirects: [] do_fork: T ) ] spids: [3306 3315] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_pipe_output)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-nu2>} {(DQ ($ Id.VSub_DollarName LABEL))} ] redirects: [] do_fork: T ) ] spids: [3409 3420] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <COMMAND> more_env: [] words: [ {<COMMAND>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName TWD) <'/INPUT'>} ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'STATUS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STATUS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'STATUS='> name: STATUS ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Simple blame_tok: <RESULTS> more_env: [] words: [{<RESULTS>} {(SQ <'pipe output'>)}] redirects: [] do_fork: T ) ] spids: [3398 3407] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_pipe_io)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_quiet)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-nu2>} {(DQ ($ Id.VSub_DollarName LABEL))} ] redirects: [] do_fork: T ) ] spids: [3483 3494] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ )} {<PIPE>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName TWD) <'/INPUT'>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <COMMAND> more_env: [] words: [ {<COMMAND>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'STATUS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STATUS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'STATUS='> name: STATUS ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Simple blame_tok: <RESULTS> more_env: [] words: [{<RESULTS>} {(SQ <'pipe io'>)}] redirects: [] do_fork: T ) ] spids: [3472 3481] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {($ Id.VSub_DollarName COPY)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'COPY='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COPY='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COPY='> name:COPY) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] 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_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] 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: <cp> more_env: [] words: [{<cp>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {<2>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {($ Id.VSub_DollarName MOVE)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'MOVE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MOVE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOVE='> name:MOVE) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {<2>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName DONE)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$i'> more_env: [] words: [ {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName TEST)} {<DONE>} {($ Id.VSub_DollarName STATUS)} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COMPARE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPARE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPARE='> name:COMPARE) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'r='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'r='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName COMMAND_ORIG)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (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: {($ Id.VSub_DollarName COMMAND_ORIG)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COMMAND_ORIG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMMAND_ORIG='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMMAND_ORIG='> name: COMMAND_ORIG ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ARGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGS='> name:ARGS) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS_ORIG> var_name: ARGS_ORIG bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) ] spids: [3714 3723] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName r)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <DO> name: DO body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName UMASK)} right: {($ Id.VSub_DollarName UMASK_ORIG)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <umask> more_env: [] words: [{<umask>} {($ Id.VSub_DollarName UMASK)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <UNIT> name: UNIT body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'cmd='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cmd)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <-> <Id.Lit_Other '+'> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike UNIT_READONLY) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (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: {(DQ ($ Id.VSub_DollarName COMMAND) <' '> ($ Id.VSub_Star '*'))} ) ] redirects: [] ) ] spids: [3853 3863] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'ARGV='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV='> name:ARGV) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [{(DQ ($ Id.VSub_At '@'))}] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike UNIT_READONLY) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DAmp _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName UNIT)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) 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: <set> more_env: [] words: [{<set>} {<-->} {(DQ ($ Id.VSub_DollarName cmd))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <-> <Id.Lit_Other '+'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} {(DQ ($ Id.VSub_DollarName cmd))} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) 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.ShAssignment left: <Id.Lit_VarLike 'cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [3929 3951] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'UNIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] 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: {($ Id.VSub_DollarName cmd)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'cmd='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <whence> more_env: [] words: [{<whence>} {($ Id.VSub_DollarName COMMAND)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName cmd)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {($ Id.VSub_DollarName COMMAND) <Id.Lit_Colon ':'>} {<not>} {<found>} ] redirects: [] do_fork: T ) ] spids: [4051 4062] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName cmd)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <FATAL> more_env: [] words: [{<FATAL>} {($ Id.VSub_DollarName cmd) <Id.Lit_Colon ':'>} {<not>} {<found>}] redirects: [] do_fork: T ) ] spids: [4074 4085] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (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.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: {(DQ ($ Id.VSub_DollarName COMMAND) <' '> ($ Id.VSub_Star '*'))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <TWD> name: TWD body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'TWD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TWD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TWD='> name:TWD) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TWD> var_name: TWD suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'TWD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TWD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TWD='> name:TWD) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TMPDIR> var_name: TMPDIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <tmp>} ) right: <Id.Right_DollarBrace '}'> ) <'/tst-'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TWD> var_name: TWD suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) <-> ($ Id.VSub_Dollar '$') <-> ($ Id.VSub_DollarName RANDOM) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TWD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TWD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TWD='> name:TWD) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] 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 'TWD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TWD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TWD='> name:TWD) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TMPDIR> var_name: TMPDIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <tmp>} ) right: <Id.Right_DollarBrace '}'> ) <'/'> ($ Id.VSub_Number 1) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <TEST> name: TEST body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'LINE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LINE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LINE='> name:LINE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TESTLINE)} ) ] redirects: [] ) (command.Simple blame_tok: <UNWIND> more_env: [] words: [{<UNWIND>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'COUNT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COUNT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COUNT='> name:COUNT) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LASTITEM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LASTITEM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTITEM='> name:LASTITEM) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike LAST) ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'TEST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST='> name:TEST) op: assign_op.Equal rhs: {($ Id.VSub_DollarName LAST)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.ExtGlob_Plus '+('> pattern: (pat.Words words: [ { (word_part.ExtGlob op: <Id.ExtGlob_Plus '+('> arms: [{<'[0123456789]'>}] right: <Id.Right_ExtGlob _> ) } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LAST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LAST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LAST='> name:LAST) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'TEST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST='> name:TEST) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] 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 'LAST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LAST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LAST='> name:LAST) op: assign_op.Equal rhs: {<0> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.PatSub pat: {<'['> <Id.Lit_Other '!'> <'0123456789]'>} replace: {} replace_mode: Id.Undefined_Tok slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } ) (AssignPair left: <Id.Lit_VarLike 'TEST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST='> name:TEST) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NOTE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTE='> name:NOTE) 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.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName TEST)} right: {($ Id.VSub_DollarName TEST_select)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id: Id.Arith_Bang child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} {(DQ ($ Id.VSub_DollarName TEST) <'\t'> ($ Id.VSub_Number 2))} ] redirects: [] do_fork: T ) ] spids: [4305 4338] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<ARGS>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<EXPORT>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'EXPORTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXPORTS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXPORTS='> name:EXPORTS) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEST_file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST_file='> name:TEST_file) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName TEST)} right: {(${ Id.VSub_Name GROUP) <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'GROUP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GROUP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TEST> var_name: TEST suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: { (word_part.ExtGlob op: <Id.ExtGlob_Plus '+('> arms: [ { < '[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]' > } ] right: <Id.Right_ExtGlob _> ) } ) 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.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id: Id.Arith_Bang child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <INITIALIZE> more_env: [] words: [{<INITIALIZE>}] redirects: [] do_fork: T ) ] spids: [4403 4430] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [4375 4391] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike SUBTESTS) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName TEST)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id: Id.Arith_Bang child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <EXEC> name: EXEC body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [4486 4511] ) ] else_action: [] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike SUBTESTS) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) ] spids: [4519 4528] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (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: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ITEM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ITEM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ITEM='> name:ITEM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName LINE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NOTE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTE='> name:NOTE) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-f>} {(SQ <'%q '>)} {<-->} {($ Id.VSub_DollarName COMMAND_ORIG)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name JOBPID> var_name: JOBPID suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<'&'>}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ARGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGS='> name:ARGS) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [{(DQ ($ Id.VSub_At '@'))}] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <JOB> name: JOB body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'JOBPID='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBPID='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBPID='> name:JOBPID) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <EXEC> more_env: [] words: [{<EXEC>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <CONTINUE> name: CONTINUE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBOP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBOP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBOP='> name:JOBOP) op: assign_op.Equal rhs: {<CONTINUE>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ITEM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ITEM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ITEM='> name:ITEM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName LINE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NOTE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTE='> name:NOTE) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-f>} {(SQ <'%q '>)} {<-->} {($ Id.VSub_DollarName JOBOP)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <EXITED> name: EXITED body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBOP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBOP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBOP='> name:JOBOP) op: assign_op.Equal rhs: {<EXITED>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ITEM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ITEM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ITEM='> name:ITEM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName LINE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NOTE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTE='> name:NOTE) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-f>} {(SQ <'%q '>)} {<-->} {($ Id.VSub_DollarName JOBOP)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <KILL> name: KILL body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBOP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBOP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBOP='> name:JOBOP) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBOP)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBOP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBOP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBOP='> name:JOBOP) op: assign_op.Equal rhs: {<KILL>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'ITEM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ITEM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ITEM='> name:ITEM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName LINE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NOTE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTE='> name:NOTE) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-f>} {(SQ <'%q '>)} {<-->} {($ Id.VSub_DollarName JOBOP)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <CD> name: CD body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id: Id.Arith_Bang child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {<cannot>} {<initialize>} {<working>} {<directory>} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>] ) ] spids: [4794 4821] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <EXPORT> name: EXPORT body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<x>} {<n>} {<v>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName GROUP)} right: {<INIT>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x 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 '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 x> var_name: x suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <'='>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'ENVIRON['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'ENVIRON['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'ENVIRON['> name: ENVIRON index: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike ENVIRONS) ) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (DQ <'\''> ($ Id.VSub_DollarName v) <'\''>) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [4877 4890] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [4942 4967] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x 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 '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 x> var_name: x suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <'='>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'EXPORT['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'EXPORT['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'EXPORT['> name: EXPORT index: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike EXPORTS) ) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (DQ <'\''> ($ Id.VSub_DollarName v) <'\''>) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <FLUSH> name: FLUSH body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [5032 5057] ) ] else_action: [] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike SUBTESTS) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) ] spids: [5065 5074] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <PROG> name: PROG body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<command>} {<args>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [5101 5126] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ITEM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ITEM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ITEM='> name:ITEM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName LINE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NOTE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTE='> name:NOTE) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-f>} {(SQ <'%q '>)} {<-->} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COMMAND_ORIG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMMAND_ORIG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMAND_ORIG='> name:COMMAND_ORIG) op: assign_op.Equal rhs: {($ Id.VSub_DollarName COMMAND)} ) ] 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: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'ARGS_ORIG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGS_ORIG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGS_ORIG='> name:ARGS_ORIG) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGS> var_name: ARGS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ARGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGS='> name:ARGS) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [{(DQ ($ Id.VSub_At '@'))}] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <NOTE> name: NOTE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'NOTE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTE='> name:NOTE) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <IO> name: IO body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<op>} {<i>} {<v>} {<f>} {<file>} {<type>} {<x>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [5235 5260] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName UMASK)} right: {($ Id.VSub_DollarName UMASK_ORIG)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <umask> more_env: [] words: [{<umask>} {($ Id.VSub_DollarName UMASK_ORIG)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <FIFO> pattern: (pat.Words words:[{<FIFO>} {<PIPE>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName type)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'TYPE['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'TYPE['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'TYPE['> name: TYPE index: {($ Id.VSub_DollarName op)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type)} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'FILTER['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'FILTER['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'FILTER['> name: FILTER index: {($ Id.VSub_DollarName op)} ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TWD) <'/'> ($ Id.VSub_DollarName op)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] 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_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-x> pattern: (pat.Words words:[{<-x>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-e> pattern: (pat.Words words:[{<-e>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'FILTER['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'FILTER['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'FILTER['> name: FILTER index: {($ Id.VSub_DollarName op)} ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-e> pattern: (pat.Words words:[{<-e> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'FILTER['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'FILTER['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'FILTER['> name: FILTER index: {($ Id.VSub_DollarName op)} ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<-e>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-f> pattern: (pat.Words words:[{<-f> <Id.Lit_Star '*'>} {<-n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (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.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) 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 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'i='> (SQ <'$'>) ($ Id.VSub_DollarName op)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName i) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName file) <' '>) <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: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_DollarName op) <Id.Lit_Equals '='> (SQ <'"$'>) ($ Id.VSub_DollarName op) (SQ <' $file"'>) } ] 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: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] 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:{(DQ <' '> ($ Id.VSub_DollarName IGNORE) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName file) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName IGNORE)}]) 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 i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$file'> pattern: (pat.Words words:[{($ Id.VSub_DollarName file)}]) 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 '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: { (DQ ($ Id.VSub_DollarName v) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IGNORE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IGNORE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IGNORE='> name:IGNORE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'FILE['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'FILE['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'FILE['> name: FILE index: {($ Id.VSub_DollarName op)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName file)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <OUTPUT> pattern: (pat.Words words:[{<OUTPUT>} {<ERROR>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_DollarName file) <.ex>} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName file)} right: {<'/'> <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TWD) <'/'> ($ Id.VSub_DollarName file)} ) ] redirects: [] ) ] spids: [5682 5696] ) ] 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_ArrayLhsOpen 'SAME['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'SAME['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'SAME['> name: SAME index: {($ Id.VSub_DollarName op)} ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName file)} right: {<'/'> <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <RM> more_env: [] words: [{<RM>} {($ Id.VSub_DollarName file) <.sav>}] redirects: [] do_fork: T ) ] spids: [5724 5738] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <RM> more_env: [] words: [{<RM>} {($ Id.VSub_DollarName TWD) <'/'> ($ Id.VSub_DollarName file) <.sav>}] redirects: [] do_fork: T ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName file)} right: {<Id.Lit_Other '*'> <'/'> <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name file> var_name: file suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] spids: [5759 5774] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName file)} right: {<Id.Lit_Other '*'> <'/'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName type)} right: {<FIFO>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkfifo> more_env: [] words: [{<mkfifo>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) ] spids: [5807 5820] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TYPE> var_name: TYPE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName op)} ) right: <Id.Right_DollarBrace '}'> ) } right: {<FIFO>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBOP)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName f) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-f>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {<-->} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-f> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {<-->} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name f> var_name: f suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<-f>} ) right: <Id.Right_DollarBrace '}'> ) ) (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: <print> more_env: [] words: [ {<print>} {($ Id.VSub_DollarName f)} {<-r>} {<-->} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName file)} ) ] ) ] spids: [5857 5866] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName f) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-f>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {<-->} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-f> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {<-->} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name f> var_name: f suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<-f>} ) right: <Id.Right_DollarBrace '}'> ) ) (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: <print> more_env: [] words: [ {<print>} {($ Id.VSub_DollarName f)} {<-r>} {<-->} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName file)} ) ] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [5837 5855] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_Pound '#') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName f) } right: {<0> <Id.Lit_Colon ':'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName f) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-f>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {<-->} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-f> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {<-->} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name f> var_name: f suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<-f>} ) right: <Id.Right_DollarBrace '}'> ) ) (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: <print> more_env: [] words: [ {<print>} {($ Id.VSub_DollarName f)} {<-r>} {<-->} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName file)} ) ] ) terminator: <Id.Op_Amp _> ) ] spids: [6035 6051] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName x)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) ] spids: [6132 6141] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [5791 5805] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <INPUT> name: INPUT body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <IO> more_env: [] words: [{<IO>} {($ Id.VSub_Number 0)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <COPY> name: COPY body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [6190 6215] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COPY='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COPY='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COPY='> name:COPY) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName COPY) <' '> ($ Id.VSub_At '@'))} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <MOVE> name: MOVE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<f>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [6248 6273] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter__Args) 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 f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <INPUT> pattern: (pat.Words words:[{<INPUT>} {<OUTPUT>} {<ERROR>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TWD) <'/'> ($ Id.VSub_DollarName f)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (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.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PWD) <'/'> ($ Id.VSub_DollarName f)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MOVE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MOVE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOVE='> name:MOVE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName MOVE) <' '> ($ Id.VSub_DollarName f))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <SAME> name: SAME body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>} {<file>} {<v>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [6366 6391] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (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: <2> pattern: (pat.Words words:[{<2>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <INPUT> pattern: (pat.Words words:[{<INPUT>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_Number 2)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'SAME['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'SAME['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'SAME['> name: SAME index: {($ Id.VSub_Number 1)} ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COMPARE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPARE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPARE='> name:COMPARE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName COMPARE) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <3> pattern: (pat.Words words:[{<3>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'SAME['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'SAME['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'SAME['> name: SAME index: {($ Id.VSub_Number 2)} ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<Id.Lit_VarLike 'i='> (SQ <'$'>) ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName i) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number 2) <' '>) <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: <eval> more_env: [] words: [ {<eval>} {($ Id.VSub_Number 1) <Id.Lit_Equals '='> (SQ <'"$'>) ($ Id.VSub_Number 1) (SQ <' $2"'>) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COMPARE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPARE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPARE='> name:COMPARE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName COMPARE) <' '> ($ Id.VSub_Number 2))} ) ] 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:{(DQ <' '> ($ Id.VSub_DollarName IGNORE) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName file) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName IGNORE)}]) 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 i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$file'> pattern: (pat.Words words:[{($ Id.VSub_DollarName file)}]) 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 '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: { (DQ ($ Id.VSub_DollarName v) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IGNORE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IGNORE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IGNORE='> name:IGNORE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName v)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <OUTPUT> name: OUTPUT body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <IO> more_env: [] words: [{<IO>} {($ Id.VSub_Number 0)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <ERROR> name: ERROR body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <IO> more_env: [] words: [{<IO>} {($ Id.VSub_Number 0)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <RM> name: RM body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_rmu)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<-R>} {<u> <Id.Lit_Other '+'> <rwx>} {(DQ ($ Id.VSub_At '@'))}] 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 ) ] spids: [6671 6682] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {($ Id.VSub_DollarName TEST_rmu)} {($ Id.VSub_DollarName TEST_rmflags)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <REMOVE> name: REMOVE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <RM> more_env: [] words: [{<RM>} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName i) <.sav>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <IGNORE> name: IGNORE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) 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 i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <INPUT> pattern: (pat.Words words:[{<INPUT>} {<OUTPUT>} {<ERROR>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TWD) <'/'> ($ Id.VSub_DollarName i)} ) ] 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:{(DQ <' '> ($ Id.VSub_DollarName IGNORE) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName i) <' '>) <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 'IGNORE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IGNORE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IGNORE='> name:IGNORE) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName IGNORE) <' '> ($ Id.VSub_DollarName i)) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <KEEP> name: KEEP body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) 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 i))} ) ] 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 i))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <DIAGNOSTICS> name: DIAGNOSTICS body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#') <Id.Lit_Colon ':'> ($ Id.VSub_Number 1)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Colon ':'>} {<1> <Id.Lit_Colon ':'> <1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DIAGNOSTICS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DIAGNOSTICS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIAGNOSTICS='> name: DIAGNOSTICS ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'EXIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT='> name:EXIT) op: assign_op.Equal rhs: {(SQ <'*'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1> <Id.Lit_Colon ':'>} {<1> <Id.Lit_Colon ':'> <0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DIAGNOSTICS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DIAGNOSTICS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIAGNOSTICS='> name: DIAGNOSTICS ) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'EXIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT='> name:EXIT) op: assign_op.Equal rhs: {<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 'DIAGNOSTICS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DIAGNOSTICS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIAGNOSTICS='> name: DIAGNOSTICS ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'EXIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT='> name:EXIT) op: assign_op.Equal rhs: {(SQ <'*'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <IGNORESPACE> name: IGNORESPACE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name IGNORESPACE> var_name: IGNORESPACE suffix_op: (suffix_op.Unary op:<Id.VTest_Equals _> arg_word:{<-b>}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <EXIT> name: EXIT body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'EXIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT='> name:EXIT) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <INFO> name: INFO body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-R15>} {<Id.Lit_VarLike 'info='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_Number 1)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'info='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'info='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'info='> name:info) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) ] spids: [7044 7055] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-u2>} {(DQ ($ Id.VSub_DollarName info) <' '>)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] spids: [7067 7078] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <COMMAND> name: COMMAND body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<input>}] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike TESTS) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ENVIRON> var_name: ENVIRON bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) right: <Id.Right_DollarBrace '}'> ) <' '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name EXPORT> var_name: EXPORT bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) right: <Id.Right_DollarBrace '}'> ) ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_VarLike 'LC_ALL='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (SQ <' '>) <LC_> (word_part.ExtGlob op: <Id.ExtGlob_Plus '+('> arms: [{<'[A-Z]'>}] right: <Id.Right_ExtGlob _> ) <Id.Lit_Equals '='> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'EXPORT['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'EXPORT['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'EXPORT['> name: EXPORT index: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike EXPORTS) ) ) op: assign_op.Equal rhs: {(DQ <'LC_ALL='>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_keep)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'PS4='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PS4='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PS4='> name:PS4) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-x>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-r>} {<-->} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ENVIRON> var_name: ENVIRON bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name EXPORT> var_name: EXPORT bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ <'PATH='> ($ Id.VSub_DollarName PATH))} {($ Id.VSub_DollarName COMMAND)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s,^print -r -- ,,'>)} {<-e>} {(SQ <'s,$, "$@",'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/COMMAND'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <chmod> more_env: [] words: [ {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName TWD) <'/COMMAND'>} ] redirects: [] do_fork: T ) ] spids: [7189 7198] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName UMASK)} right: {($ Id.VSub_DollarName UMASK_ORIG)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TWD) <'/ERROR'>} ) ] do_fork: T ) (command.Simple blame_tok: <umask> more_env: [] words: [{<umask>} {($ Id.VSub_DollarName UMASK)}] redirects: [] do_fork: T ) ] spids: [7291 7304] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TYPE> var_name: TYPE bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike INPUT) ) right: <Id.Right_DollarBrace '}'> ) } right: {<FIFO>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name FILE> var_name: FILE bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike INPUT) ) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Other '*'> <'/INPUT'>} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'input='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'input='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'input='> name:input) op: assign_op.Equal rhs: { (DQ <'< '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name FILE> var_name: FILE bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike INPUT) ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) ] spids: [7321 7353] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_trace)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<Id.Lit_Other '+'> <x>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<print>} {<-u2>} {(DQ ($ Id.VSub_DollarName PS4))} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ENVIRON> var_name: ENVIRON bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name EXPORT> var_name: EXPORT bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_VarLike 'PATH='> (SQ <'$PATH'>)} {(SQ <'$'>) <COMMAND>} {(SQ <'"$@"'>)} {(SQ <'$input'>)} {(SQ <'"2>$TWD/ERROR"'>)} {(SQ <'"${JOBPID:+&}"'>)} ] redirects: [] do_fork: T ) ] spids: [7370 7379] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ENVIRON> var_name: ENVIRON bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name EXPORT> var_name: EXPORT bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_VarLike 'PATH='> (SQ <'$PATH'>)} {(SQ <'$'>) <COMMAND>} {(SQ <'"$@"'>)} {($ Id.VSub_DollarName input)} {(DQ <'2>'> ($ Id.VSub_DollarName TWD) <'/ERROR'>)} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name JOBPID> var_name: JOBPID suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<'&'>}) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'STATUS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STATUS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STATUS='> name:STATUS) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_trace)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-x>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBPID)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'JOBPID='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBPID='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBPID='> name:JOBPID) op: assign_op.Equal rhs: {($ Id.VSub_Bang '!')} ) ] redirects: [] ) ] spids: [7513 7522] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName UMASK)} right: {($ Id.VSub_DollarName UMASK_ORIG)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <umask> more_env: [] words: [{<umask>} {($ Id.VSub_DollarName UMASK_ORIG)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName STATUS)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <RESULTS> name: RESULTS body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>} {<j>} {<k>} {<s>} {<failed>} {<ignore>} {<io>} {<op>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_Number 1)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'io='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'io='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'io='> name:io) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1) <' '>)} ) ] redirects: [] ) ] spids: [7584 7593] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalOr left: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBOP)}) right: (bool_expr.LogicalOr left: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBPID)}) right: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBSTATUS)}) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<1>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName COMPARE)} {($ Id.VSub_DollarName TWD) <'/OUTPUT'>} {($ Id.VSub_DollarName TWD) <'/ERROR'>} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName IGNORE) <' '> ($ Id.VSub_DollarName ignore) <' '> ($ Id.VSub_DollarName MOVE) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName i) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ignore='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ignore='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ignore='> name:ignore) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ignore) <' '> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name FILTER> var_name: FILTER bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName op)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'{ '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name FILTER> var_name: FILTER bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName op)} ) right: <Id.Right_DollarBrace '}'> ) <' ;} < '> ($ Id.VSub_DollarName i) <' > '> ($ Id.VSub_DollarName i) <.fi> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_DollarName i) <.fi>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] spids: [7692 7706] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SAME> var_name: SAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName op)}) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName j)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName i)} right: {<'/'> <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) ] spids: [7759 7773] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TWD) <'/'> ($ Id.VSub_DollarName i)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [s] iterable: (for_iter.Words words:[{<ex>} {<sav>} {<err>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName k) <.> ($ Id.VSub_DollarName s)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: {($ Id.VSub_DollarName k) <.> ($ Id.VSub_DollarName s)} ) ] redirects: [] ) ] spids: [7746 7757] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w: {(DQ ($ Id.VSub_DollarName DIAGNOSTICS))} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName i)} right: {<Id.Lit_Other '*'> <'/ERROR'>} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalOr left: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName STATUS)} right: {<0>} ) right: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_s child: {($ Id.VSub_DollarName TWD) <'/ERROR'>} ) ) ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName DIAGNOSTICS)} right: {<1>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <Id.Redir_Less '<'> more_env: [] words: [] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName i)} ) ] do_fork: F ) right: <Id.Eof_RParen _> ) } right: {($ Id.VSub_DollarName DIAGNOSTICS)} ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'failed='> name: failed ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName failed) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name failed> var_name: failed suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<','>} ) right: <Id.Right_DollarBrace '}'> ) <DIAGNOSTICS> } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_verbose)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName DIAGNOSTICS)} right: {<1>} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} {(DQ <'\t==='>)} { (DQ <'diagnostic pattern \''> ($ Id.VSub_DollarName DIAGNOSTICS) <'\' did not match'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName TWD) <Id.Lit_Slash '/'> } ) right: <Id.Right_DollarBrace '}'> ) } {(DQ <'==='>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName i)}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [7907 7924] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [7854 7895] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [7832 7852] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <diff> more_env: [] words: [ {<diff>} {($ Id.VSub_DollarName IGNORESPACE)} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName j)} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName i) <.diff>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_s child: {($ Id.VSub_DollarName i) <.diff>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'failed='> name:failed) op: assign_op.Equal rhs: {($ Id.VSub_DollarName failed) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name failed> var_name: failed suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<','>} ) right: <Id.Right_DollarBrace '}'> ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName TWD) <Id.Lit_Slash '/'>} ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName TEST_verbose)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} {(DQ <'\t==='>)} {<diff>} {($ Id.VSub_DollarName IGNORESPACE)} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName TWD) <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } {(DQ <'<actual >expected ==='>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName i) <.diff>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [8017 8026] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [7988 8000] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBOP)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBPID)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <kill> more_env: [] words: [{<kill>} {<-0>} {($ Id.VSub_DollarName JOBPID)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <wait> more_env: [] words: [{<wait>} {($ Id.VSub_DollarName JOBPID)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBSTATUS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBSTATUS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'JOBSTATUS='> name: JOBSTATUS ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'JOBPID='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBPID='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBPID='> name:JOBPID) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [8081 8103] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName JOBOP)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <CONTINUE> pattern: (pat.Words words:[{<CONTINUE>}]) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName JOBPID)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'failed='> name: failed ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName failed) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name failed> var_name: failed suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<','>} ) right: <Id.Right_DollarBrace '}'> ) <EXITED> } ) ] redirects: [] ) ] spids: [8134 8145] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <EXITED> pattern: (pat.Words words:[{<EXITED>}]) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName JOBPID)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'failed='> name: failed ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName failed) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name failed> var_name: failed suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<','>} ) right: <Id.Right_DollarBrace '}'> ) <RUNNING> } ) ] redirects: [] ) ] spids: [8166 8175] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName JOBPID)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'failed='> name: failed ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName failed) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name failed> var_name: failed suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<','>} ) right: <Id.Right_DollarBrace '}'> ) <EXITED> } ) ] redirects: [] ) ] spids: [8196 8207] ) ] else_action: [] 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.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <kill> more_env: [] words: [ {<kill>} {<-> ($ Id.VSub_DollarName JOBOP)} {($ Id.VSub_DollarName JOBPID)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'failed='> name: failed ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName failed) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name failed> var_name: failed suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<','>} ) right: <Id.Right_DollarBrace '}'> ) <KILL-> ($ Id.VSub_DollarName JOBOP) } ) ] redirects: [] ) ] spids: [8222 8237] ) ] 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 'JOBOP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'JOBOP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JOBOP='> name:JOBOP) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [8070 8079] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName failed)}) ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName STATUS)} right: {($ Id.VSub_DollarName EXIT)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'failed='> name:failed) op: assign_op.Equal rhs: { (DQ <'exit code '> ($ Id.VSub_DollarName EXIT) <' expected -- got '> ($ Id.VSub_DollarName STATUS) ) } ) ] redirects: [] ) ] spids: [8265 8284] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName failed)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike ERRORS) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> 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 <'FAILED '> (${ Id.VSub_Name io) <'[ '> ($ Id.VSub_DollarName failed) <' ] '> ($ Id.VSub_DollarName NOTE) ) } ) ] redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-r>} {<-u2>} {(DQ <'\t'> ($ Id.VSub_DollarName SHOW))}] redirects: [] do_fork: T ) ] spids: [8316 8327] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_keep)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'GROUP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GROUP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: {<FINI>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] spids: [8357 8366] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [8298 8307] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> 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: {($ Id.VSub_DollarName NOTE)} ) ] redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-r>} {<-u2>} {(DQ <'\t'> ($ Id.VSub_DollarName SHOW))}] redirects: [] do_fork: T ) ] spids: [8378 8389] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <SET> name: SET body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>} {<r>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) ] spids: [8429 8438] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName i)} right: {<->} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'r='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'r='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [8453 8466] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName i)} right: {<Id.Lit_Other '+'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'r='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'r='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [8472 8485] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName i)} right: {<no> <Id.Lit_Other '?'> <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<no>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (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: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [8492 8507] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName i)} right: {<Id.Lit_Other '*'> <Id.BoolBinary_GlobEqual '='> <Id.Lit_Other '*'> } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> 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 i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName v)} right: {<0>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> 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: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [8546 8559] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'='> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] spids: [8520 8535] ) ] else_kw: <Id.KW_Else else> else_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: {<1>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.PatSub pat: {<->} replace: {<_>} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName r)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'READONLY['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'READONLY['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'READONLY['> name: READONLY index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [8596 8605] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name READONLY> var_name: READONLY bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [8615 8629] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<TEST_> ($ Id.VSub_DollarName i) <Id.Lit_Equals '='> ($ Id.VSub_DollarName v) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <VIEW> name: VIEW body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <nameref> more_env: [] words: [{<nameref>} {<Id.Lit_VarLike 'var='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<i>} {<bwd>} {<file>} {<pwd>} {<view>} {<root>} {<offset>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName var)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [8686 8695] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (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: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] 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 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TWD> var_name: TWD suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bwd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bwd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bwd='> name:bwd) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PMP> var_name: PMP suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName file)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_d child: {($ Id.VSub_DollarName file)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'var='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'var='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'var='> name:var) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PWD) <'/'> ($ Id.VSub_DollarName file)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [8764 8777] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName file) <'/'> <Id.Lit_Star '*'>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName i)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'var='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'var='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'var='> name: var ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PWD) <'/'> ($ Id.VSub_DollarName file) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [8806 8817] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [8751 8762] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [view] iterable: (for_iter.Words words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name VIEWS> var_name: VIEWS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] ) 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 view)}) 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.ShAssignment left: <Id.Lit_VarLike 'view='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'view='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'view='> name:view) op: assign_op.Equal rhs: {($ Id.VSub_DollarName pwd) <'/'> ($ Id.VSub_DollarName view)} ) ] 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 offset)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName pwd)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$view'> pattern: (pat.Words words: [{($ Id.VSub_DollarName view) <'/'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'offset='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'offset='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'offset='> name: offset ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pwd> var_name: pwd suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName view)} ) 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.ShAssignment left: <Id.Lit_VarLike 'offset='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'offset='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'offset='> name: offset ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name bwd> var_name: bwd suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName view)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName view) ($ Id.VSub_DollarName offset) <'/'> ($ Id.VSub_DollarName file) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_d child: {($ Id.VSub_DollarName view) ($ Id.VSub_DollarName offset) <'/'> ($ Id.VSub_DollarName file) } ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'var='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'var='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'var='> name: var ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName view) ($ Id.VSub_DollarName offset) <'/'> ($ Id.VSub_DollarName file) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [8957 8973] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName view) ($ Id.VSub_DollarName offset) <'/'> ($ Id.VSub_DollarName file) <'/'> <Id.Lit_Star '*'> } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName i)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'var='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'var='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'var='> name: var ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName view) ($ Id.VSub_DollarName offset) <'/'> ($ Id.VSub_DollarName file) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [9006 9017] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [8941 8955] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'var='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'var='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'var='> name:var) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <INCLUDE> name: INCLUDE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<f>} {<v>} {<x>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <VIEW> more_env: [] words: [{<VIEW>} {<v>} {($ Id.VSub_DollarName f)}] redirects: [] do_fork: T ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_DollarName PREFIX)}) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName f)} right: {<'/'> <Id.Lit_Other '*'>} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <VIEW> more_env: [] words: [ {<VIEW>} {<v>} {($ Id.VSub_DollarName PREFIX) ($ Id.VSub_DollarName f)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _> <Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) (DQ <'. '> ($ Id.VSub_DollarName v)) } ) ] redirects: [] ) ] spids: [9082 9117] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {($ Id.VSub_DollarName f) <Id.Lit_Colon ':'>} {<not>} {<found>} ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName x)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(DQ ($ Id.VSub_DollarName x))} {<0>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <UMASK> name: UMASK body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: {($ Id.VSub_Pound '#')} right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'UMASK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UMASK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMASK='> name:UMASK) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] spids: [9177 9187] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'UMASK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UMASK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMASK='> name:UMASK) op: assign_op.Equal rhs: {($ Id.VSub_DollarName UMASK_ORIG)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <PIPE> name: PIPE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <IO> more_env: [] words: [{<IO>} {($ Id.VSub_Number 0)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <FIFO> name: FIFO body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <IO> more_env: [] words: [{<IO>} {($ Id.VSub_Number 0)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <IF> name: IF body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'COND_LINE['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'COND_LINE['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'COND_LINE['> name: COND_LINE index: ($ Id.Lit_ArithVarLike COND) ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName LINE)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DAmp left: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 1>} ) right: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 1>} ) ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_KEPT) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [9291 9314] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(DQ <'{ '> ($ Id.VSub_Number 1) <' ;} >/dev/null 2>&1'>)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_KEPT) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_Number 2)}) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-u2>} {(DQ <'NOTE\t'> ($ Id.VSub_Number 2))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] spids: [9346 9357] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_KEPT) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <ELIF> name: ELIF body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {<line>} {($ Id.VSub_DollarName LINE) <Id.Lit_Colon ':'>} {<no>} {<matching>} {<IF>} {<Id.KW_For for>} {<ELIF>} ] redirects: [] do_fork: T ) ] spids: [9478 9492] ) ] else_action: [] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_KEPT) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [9515 9528] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(DQ ($ Id.VSub_Star '*') <' > /dev/null 2>&1'>)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_KEPT) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_Number 2)}) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-u2>} {(DQ <'NOTE\t'> ($ Id.VSub_Number 2))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] spids: [9545 9555] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <ELSE> name: ELSE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {<line>} {($ Id.VSub_DollarName LINE) <Id.Lit_Colon ':'>} {<no>} {<matching>} {<IF>} {<Id.KW_For for>} {<ELSE>} ] redirects: [] do_fork: T ) ] spids: [9661 9675] ) ] else_action: [] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_KEPT) right: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [9698 9711] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_KEPT) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_SKIP) right: ($ Id.Lit_ArithVarLike COND) ) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_Number 1)}) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-u2>} {(DQ <'NOTE\t'> ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <FI> name: FI body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName GROUP)} right: {($ Id.VSub_DollarName TEST_select)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <RUN> more_env: [] words: [{<RUN>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike COND) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {<line>} {($ Id.VSub_DollarName LINE) <Id.Lit_Colon ':'>} {<no>} {<matching>} {<IF>} {<Id.KW_For for>} {<FI>} {<on>} {<line>} {($ Id.VSub_DollarName LINE)} ] redirects: [] do_fork: T ) ] spids: [9814 9828] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id: Id.Arith_Bang child: (arith_expr.Binary op_id: Id.Arith_LBracket left: ($ Id.Lit_ArithVarLike COND_KEPT) right: ($ Id.Lit_ArithVarLike COND) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_Number 1)}) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_quiet)}) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {<-u2>} {(DQ <'NOTE\t'> ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDMinus child: ($ Id.Lit_ArithVarLike COND) ) right: <Id.Op_DRightParen _> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <integer> more_env: [] words: [ {<integer>} {<Id.Lit_VarLike 'ERRORS='> <0>} {<Id.Lit_VarLike 'ENVIRONS='> <0>} {<Id.Lit_VarLike 'EXPORTS='> <0>} {<Id.Lit_VarLike 'TESTS='> <0>} {<Id.Lit_VarLike 'SUBTESTS='> <0>} {<Id.Lit_VarLike 'LINE='> <0>} {<Id.Lit_VarLike 'TESTLINE='> <0>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <integer> more_env: [] words: [ {<integer>} {<Id.Lit_VarLike 'ITEM='> <0>} {<Id.Lit_VarLike 'LASTITEM='> <0>} {<Id.Lit_VarLike 'COND='> <0>} {<Id.Lit_VarLike 'UNIT_READONLY='> <0>} {<COUNT>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<ARGS>} {<COMMAND>} {<COPY>} {<DIAGNOSTICS>} {<ERROR>} {<EXEC>} {<Id.Lit_VarLike 'FLUSHED='> <0>} {<Id.Lit_VarLike 'GROUP='> <INIT>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<IGNORE>} {<INPUT>} {<KEEP>} {<OUTPUT>} {<TEST>} {<SOURCE>} {<MOVE>} {<NOTE>} {<UMASK>} {<UMASK_ORIG>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<ARGS_ORIG>} {<COMMAND_ORIG>} {<TITLE>} {<UNIT>} {<ARGV>} {<PREFIX>} {<OFFSET>} {<IGNORESPACE>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<COMPARE>} {<MAIN>} {<Id.Lit_VarLike 'JOBPID='> (SQ )} {<Id.Lit_VarLike 'JOBSTATUS='> (SQ )} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<TEST_file>} {<TEST_keep>} {<TEST_pipe_input>} {<TEST_pipe_io>} {<TEST_pipe_output>} {<TEST_local>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<TEST_quiet>} {<Id.Lit_VarLike 'TEST_regular='> <1>} {<Id.Lit_VarLike 'TEST_rmflags='> (SQ <'-rf --'>)} {<TEST_rmu>} {<TEST_select>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-A>} {<SAME>} {<VIEWS>} {<FILE>} {<TYPE>} {<READONLY>} {<FILTER>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-a>} {<COND_LINE>} {<COND_SKIP>} {<COND_KEPT>} {<ENVIRON>} {<EXPORT>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-Z>} {<Id.Lit_VarLike 'LAST='> <00>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<FIGNORE>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {<-a>} {($ Id.VSub_DollarName command)} {(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: <b> pattern: (pat.Words words:[{<b>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: {($ Id.VSub_DollarName OPTARG)} right: <Id.Op_DRightParen _> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IGNORESPACE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IGNORESPACE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IGNORESPACE='> name: IGNORESPACE ) op: assign_op.Equal rhs: {<-b>} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <i> pattern: (pat.Words words:[{<i>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [ {<SET>} {<->} {<pipe-input> <Id.Lit_Equals '='> ($ Id.VSub_DollarName OPTARG)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <k> pattern: (pat.Words words:[{<k>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [{<SET>} {<->} {<Id.Lit_VarLike 'keep='> ($ Id.VSub_DollarName OPTARG)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <l> pattern: (pat.Words words:[{<l>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [{<SET>} {<->} {<local>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <o> pattern: (pat.Words words:[{<o>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [ {<SET>} {<->} {<pipe-output> <Id.Lit_Equals '='> ($ Id.VSub_DollarName OPTARG)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <p> pattern: (pat.Words words:[{<p>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [ {<SET>} {<->} {<pipe-io> <Id.Lit_Equals '='> ($ Id.VSub_DollarName OPTARG)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <q> pattern: (pat.Words words:[{<q>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [{<SET>} {<->} {<Id.Lit_VarLike 'quiet='> ($ Id.VSub_DollarName OPTARG)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <r> pattern: (pat.Words words:[{<r>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [{<SET>} {<->} {<Id.Lit_VarLike 'regular='> ($ Id.VSub_DollarName OPTARG)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <t> pattern: (pat.Words words:[{<t>}]) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_select)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEST_select='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_select='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEST_select='> name: TEST_select ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName TEST_select) <'|'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name OPTARG> var_name: OPTARG suffix_op: (suffix_op.PatSub pat: {<','>} replace: { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\|'> ch: '|' ) } replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) ] spids: [10242 10251] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEST_select='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_select='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEST_select='> name: TEST_select ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name OPTARG> var_name: OPTARG suffix_op: (suffix_op.PatSub pat: {<','>} replace: { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\|'> ch: '|' ) } replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <x> pattern: (pat.Words words:[{<x>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [{<SET>} {<->} {<Id.Lit_VarLike 'trace='> ($ Id.VSub_DollarName OPTARG)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <v> pattern: (pat.Words words:[{<v>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <SET> more_env: [] words: [{<SET>} {<->} {<Id.Lit_VarLike 'verbose='> ($ Id.VSub_DollarName OPTARG)}] 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.ShAssignment left: <Id.Lit_VarLike 'GROUP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GROUP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: {<FINI>} ) ] redirects: [] ) (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: <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: [ (command.Simple blame_tok: <FATAL> more_env: [] words: [{<FATAL>} {<test>} {<unit>} {<name>} {<omitted>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'COLUMNS='> <80>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'SOURCE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SOURCE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOURCE='> name:SOURCE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PWD)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName SOURCE) <Id.Lit_Colon ':'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PATH> var_name: PATH suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: { (word_part.ExtGlob op: <Id.ExtGlob_QMark '?('> arms: [{<.>}] right: <Id.Right_ExtGlob _> ) <':'> } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PATH> var_name: PATH suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<':'> (word_part.ExtGlob op: <Id.ExtGlob_QMark '?('> arms: [{<.>}] right: <Id.Right_ExtGlob _> ) } ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Colon ':'> <'/usr/5bin'> <Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'> } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'UNIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok:<shift> more_env:[] words:[{<shift>}] redirects:[] do_fork:T) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.Unary op_id:Id.BoolUnary_f child:{($ Id.VSub_DollarName UNIT)}) right: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_x child: {($ Id.VSub_DollarName UNIT)} ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REGRESS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REGRESS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REGRESS='> name:REGRESS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName UNIT)} ) ] redirects: [] ) ] spids: [10405 10423] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'REGRESS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REGRESS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REGRESS='> name:REGRESS) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name UNIT> var_name: UNIT suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<.tst>}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'REGRESS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'REGRESS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REGRESS='> name:REGRESS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName REGRESS) <.tst>} ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id:Id.BoolUnary_f child:{($ Id.VSub_DollarName REGRESS)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <FATAL> more_env: [] words: [ {<FATAL>} {($ Id.VSub_DollarName REGRESS) <Id.Lit_Colon ':'>} {<regression>} {<tests>} {<not>} {<found>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'UNIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name UNIT> var_name: UNIT suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'UNIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name UNIT> var_name: UNIT suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<.tst>}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MAIN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MAIN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAIN='> name:MAIN) op: assign_op.Equal rhs: {($ Id.VSub_DollarName UNIT)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName VPATH)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-A>} {<VIEWS>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name VPATH> var_name: VPATH suffix_op: (suffix_op.PatSub pat: {<':'>} replace: {(SQ <' '>)} replace_mode: Id.Lit_Slash slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'OFFSET='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OFFSET='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OFFSET='> name:OFFSET) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SOURCE> var_name: SOURCE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name VIEWS> var_name: VIEWS bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) } ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName OFFSET)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'OFFSET='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OFFSET='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OFFSET='> name:OFFSET) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name OFFSET> var_name: OFFSET suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) <'/'> } ) ] redirects: [] ) ] spids: [10527 10536] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [10486 10494] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName REGRESS)} right: {<Id.Lit_Other '*'> <'/'> <Id.Lit_Other '*'>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PREFIX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PREFIX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX='> name:PREFIX) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name REGRESS> var_name: REGRESS suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name VIEWS> var_name: VIEWS prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name VIEWS> var_name: VIEWS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'PREFIX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PREFIX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX='> name:PREFIX) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PREFIX> var_name: PREFIX suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName i) <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [10576 10591] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PREFIX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PREFIX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX='> name:PREFIX) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PREFIX> var_name: PREFIX suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName OFFSET)} ) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName PREFIX)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PREFIX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PREFIX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX='> name:PREFIX) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PREFIX) <'/'>} ) ] redirects: [] ) ] spids: [10632 10641] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [10551 10565] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TWD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TWD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TWD='> name:TWD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PWD) <'/'> ($ Id.VSub_DollarName UNIT) <.tmp>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PMP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PMP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PMP='> name:PMP) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>} {<-P>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <'/'> ($ Id.VSub_DollarName UNIT) <.tmp> } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'UMASK_ORIG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UMASK_ORIG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMASK_ORIG='> name:UMASK_ORIG) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <umask> more_env: [] words: [{<umask>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'UMASK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UMASK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMASK='> name:UMASK) op: assign_op.Equal rhs: {($ Id.VSub_DollarName UMASK_ORIG)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ARGV='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV='> name:ARGV) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [{(DQ ($ Id.VSub_At '@'))}] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) } ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Other '['> <-> <Id.Lit_Other '+'> <Id.Lit_Other ']'> <Id.Lit_Other '*'> } ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <UNIT> more_env: [] words: [ {<UNIT>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name ARGV> var_name: ARGV bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'UNIT_READONLY='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT_READONLY='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT_READONLY='> name:UNIT_READONLY) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [10683 10713] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ <'code=$?; CLEANUP $code'>)} {<EXIT>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_select)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEST_select='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_select='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST_select='> name:TEST_select) op: assign_op.Equal rhs: {(DQ <'[0123456789]*'>)} ) ] redirects: [] ) ] spids: [10740 10750] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEST_select='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_select='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST_select='> name:TEST_select) op: assign_op.Equal rhs: {(DQ <'@('> ($ Id.VSub_DollarName TEST_select) <'|+(0))'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_trace)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'PS4='> (SQ <':$LINENO: '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-ft>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_Other '+'> <f>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-x>}] redirects: [] do_fork: T ) ] spids: [10766 10774] ) ] else_action: [] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_verbose)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<SHOW>}] redirects: [] do_fork: T ) ] spids: [10802 10810] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-L70>} {<SHOW>}] redirects: [] do_fork: T ) ] 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.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w:{($ Id.VSub_DollarName TEST_keep)}) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <ulimit> more_env: [] words: [{<ulimit>} {<-c>} {<0>}] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> 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>} ) ] ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <ulimit> more_env: [] words: [{<ulimit>} {<-c>} {<0>}] redirects: [] do_fork: T ) ] spids: [10826 10852] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<--pipefail>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'BODY='> (SQ <'BODY=BODY; function BODY'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'CONTINUE='> (SQ <'LINE=$LINENO; CONTINUE'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'DO='> (SQ <'(( $ITEM != $FLUSHED )) && RUN DO; DO &&'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'DONE='> (SQ <'DONE=DONE; function DONE'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'EXEC='> (SQ <'LINE=$LINENO; EXEC'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'EXITED='> (SQ <'LINE=$LINENO; EXITED'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'INIT='> (SQ <'INIT=INIT; function INIT'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'JOB='> (SQ <'LINE=$LINENO; JOB'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'KILL='> (SQ <'LINE=$LINENO; KILL'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'PROG='> (SQ <'LINE=$LINENO; FLUSH; PROG'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'TEST='> (SQ <'TESTLINE=$LINENO; TEST'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'IF='> (SQ <'LINE=$LINENO; FLUSH; IF'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'ELIF='> (SQ <'LINE=$LINENO; FLUSH; ELIF'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'ELSE='> (SQ <'LINE=$LINENO; FLUSH; ELSE'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <alias> more_env: [] words: [{<alias>} {<Id.Lit_VarLike 'FI='> (SQ <'LINE=$LINENO; FLUSH; FI'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {($ Id.VSub_DollarName REGRESS)}] redirects: [] do_fork: T ) (command.Simple blame_tok:<RUN> more_env:[] words:[{<RUN>}] redirects:[] do_fork:T) (command.ShAssignment left: <Id.Lit_VarLike 'GROUP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GROUP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: {<FINI>} ) ] redirects: [] ) ] )