(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:SHQL_ROOT) op:Equal rhs:{(DQ (/u/shql))} spids:[19])] spids: [19] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EDITOR) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name EDITOR> suffix_op: (StringUnary op_id: VTest_ColonEquals arg_word: {(Lit_Slash /) (usr) (Lit_Slash /) (bin) (Lit_Slash /) (vi)} ) spids: [29 38] ) ) } spids: [27] ) ] spids: [27] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SHELL) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name SHELL> suffix_op: (StringUnary op_id: VTest_ColonEquals arg_word: {(Lit_Slash /) (bin) (Lit_Slash /) (sh)} ) spids: [46 53] ) ) } spids: [44] ) ] spids: [44] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:AWK) op:Equal rhs:{(mawk)} spids:[59])] spids: [59] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DEBUG) op:Equal rhs:{(DQ (N))} spids:[67])] spids: [67] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$DEBUG'))} {(Lit_Other '=')} {(DQ (Y))} {(Lit_Other ']')}) (C {(set)} {(-x)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:UMASK) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(umask)})]) left_token: <Left_Backtick '`'> spids: [103 105] ) } spids: [102] ) ] spids: [102] ) (C {(umask)} {(0000)}) (C {(trap)} { (DQ ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (Goodbye) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ; ') (' rm -f /tmp/') ($ VSub_Dollar '$$') (' /tmp/') ($ VSub_Dollar '$$') ('row /tmp/') ($ VSub_Dollar '$$') ('join*') ) } {(0)} {(1)} {(2)} {(3)} {(15)} ) (C {(set)} {(-h)}) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [(C {(echo)} {(SQ <'\\c'>)}) (C {(grep)} {(-s)} {(c)})] negated: F ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NOCR1) op:Equal rhs:{(SQ <-n>)} spids:[174])] spids: [174] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NOCR2) op:Equal rhs:{(DQ )} spids:[183])] spids: [183] ) ] spids: [16777215 168] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NOCR1) op:Equal rhs:{(DQ )} spids:[190])] spids: [190] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NOCR2) op:Equal rhs:{(SQ <'\\c'>)} spids:[198])] spids: [198] ) ] spids: [187 203] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NL) op:Equal rhs:{(SQ <'\n'>)} spids:[205])] spids: [205] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:TAB) op:Equal rhs:{(SQ <'\t'>)} spids:[210])] spids: [210] ) (C {(export)} {(_IFS)} {(TABLE)} {(CMD)} {(NOCR1)} {(NOCR2)} {(NL)} {(TAB)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_IFS) op: Equal rhs: {(DQ ($ VSub_Name '$IFS'))} spids: [231] ) ] spids: [231] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (X-q))} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:QUIET) op:Equal rhs:{(DQ (Y))} spids:[257])] spids: [257] ) (C {(shift)}) ] spids: [16777215 255] ) ] spids: [16777215 265] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (X))} {(Lit_Other ']')} ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Missing database name.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[293])] ) (SimpleCommand words: [ {(echo)} {(DQ ('The database name must be a directory under ') ($ VSub_Name '$HOME') (/shql))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[305])] ) (SimpleCommand words: [{(echo)} {(DQ ('\tor a directory under ') ($ VSub_Name '$SHQL_ROOT'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[316])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 285] ) ] spids: [16777215 324] ) (C {(echo)} {(DQ ('Database: ') ($ VSub_Number '$1'))}) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(-d)} {($ VSub_Name '$HOME') (/shql/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] action: [(C {(cd)} {($ VSub_Name '$HOME') (/shql/) ($ VSub_Number '$1')})] spids: [16777215 346] ) (if_arm cond: [ (C {(Lit_Other '[')} {(-d)} {($ VSub_Name '$SHQL_ROOT') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] action: [(C {(cd)} {($ VSub_Name '$SHQL_ROOT') (/) ($ VSub_Number '$1')})] spids: [354 366] ) (if_arm cond: [ (C {(Lit_Other '[')} {(-d)} {($ VSub_Name '$HOME') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] action: [(C {(cd)} {($ VSub_Name '$HOME') (/) ($ VSub_Number '$1')})] spids: [374 386] ) (if_arm cond: [(C {(Lit_Other '[')} {(-d)} {($ VSub_Number '$1')} {(Lit_Other ']')})] action: [(C {(cd)} {($ VSub_Number '$1')})] spids: [394 404] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(DQ ('Unknown database (') ($ VSub_Number '$1') (')'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[420])] ) (SimpleCommand words: [ {(echo)} {(DQ ('The database name must be a directory under ') ($ VSub_Name '$HOME') (/shql))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[432])] ) (SimpleCommand words: [{(echo)} {(DQ ('\tor a directory under ') ($ VSub_Name '$SHQL_ROOT'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[443])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [410 451] ) (FuncDef name: syntax body: (BraceGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(create)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('CREATE TABLE table_name (\n') ('\tcolumn_name column_width \n') ('\t{, ...} \n') (') \t\n') ('or\n') ('CREATE VIEW view_name (\n') ('\ttable_or_view1.column1 = table_or_view2.column2\n') (')\n') } do_expansion: False here_end: END was_filled: T spids: [487] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [482 483 496 16777215] ) (case_arm pat_list: [{(delete)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('DELETE \n') ('FROM table_name\t\n') ('{ WHERE where_clause }\n')} do_expansion: False here_end: END was_filled: T spids: [504] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [499 500 513 16777215] ) (case_arm pat_list: [{(drop)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('DROP TABLE table_name\n') ('or\n') ('DROP VIEW view_name\n')} do_expansion: False here_end: END was_filled: T spids: [521] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [516 517 530 16777215] ) (case_arm pat_list: [{(edit)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('EDIT table_name\n') ( "is a non-standard method of changing a table's field names or display widths.\n" ) } do_expansion: False here_end: END was_filled: T spids: [538] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [533 534 547 16777215] ) (case_arm pat_list: [{(help)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('HELP ALL\n') ('or\n') ('HELP TABLES \n') ('or\n') ('HELP VIEWS\n') ('or\n') ('HELP COMMANDS\n') ('or\n') ( 'HELP [CREATE | DELETE | DROP | INSERT | SELECT | UPDATE | WHERE | PRINT | EDIT]\n' ) ('or\n') ('HELP table_name\n') ('Commands must appear in lower case.\n') } do_expansion: False here_end: END was_filled: T spids: [555] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [550 551 564 16777215] ) (case_arm pat_list: [{(insert)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('INSERT INTO table_name \n') ('\t{ ( column_name, ... ) }\n') ('VALUES ( expression, ...)\n') ('or\t\t\n') ('INSERT INTO table_name \n') ('\t{ ( column_name, ... ) }\n') ('subselect\n') } do_expansion: False here_end: END was_filled: T spids: [572] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [567 568 581 16777215] ) (case_arm pat_list: [{(print)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('PRINT table_name \n') ('is a non-standard synonym for SELECT * FROM table_name.\n') } do_expansion: False here_end: END was_filled: T spids: [589] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [584 585 598 16777215] ) (case_arm pat_list: [{(select)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('SELECT { DISTINCT } \n') ('\t[ column_name {,...} | * ]\n') ('FROM [ table_name | view_name ]\n') ('{ WHERE where_clause }\n') ('{ ORDER BY column_name { NUM } { ASC | DESC } {, ... }\n') ('{ UNION select statement }\n') ("'NUM' is a non-standard method for sorting numeric fields.\n") } do_expansion: False here_end: END was_filled: T spids: [606] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [601 602 615 16777215] ) (case_arm pat_list: [{(update)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('UPDATE table_name\n') ('SET column_name = expression {, ... }\n') ('{ WHERE where_clause }\n') } do_expansion: False here_end: END was_filled: T spids: [623] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [618 619 632 16777215] ) (case_arm pat_list: [{(where)}] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: { ( 'WHERE [ column_name | value ] [ =, !=, >, <, >=, <=, and, or, not, in ]\n' ) (' [ column_name | value | subselect ]\n') ('Parentheses may be used to group expressions. \n') } do_expansion: False here_end: END was_filled: T spids: [640] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [635 636 649 16777215] ) (case_arm pat_list: [{(syntax)}] action: [ (Sentence child: (C {(syntax)} {(commands)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(create)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(delete)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(drop)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(insert)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(select)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(update)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(where)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(print)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (Sentence child: (C {(syntax)} {(edit)}) terminator: <Op_Semi ';'> ) (C {(echo)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [652 653 740 16777215] ) ] spids: [473 479 743] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [470] ) spids: [467 470] ) (FuncDef name: lookup_field body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {($ VSub_Name '$TABLE') (Lit_Other '%')} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(grep)} {(-n)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (Lit_Other '^') ($ VSub_Number '$1') } {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)} {($ VSub_Name '$TABLE') (Lit_Other '@')} ) ] ) left_token: <Left_Backtick '`'> spids: [789 802] ) ) } spids: [787] ) ] spids: [787] ) ] spids: [16777215 785] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(grep)} {(-n)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (Lit_Other '^') ($ VSub_Number '$1') } {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)} {($ VSub_Name '$TABLE') (Lit_Other '@')} ) (C {(sed)} {(1q)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [810 829] ) ) } spids: [808] ) ] spids: [808] ) ] spids: [806 833] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$RESULT'))} {(Lit_Other ']')}) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTFIELD) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [852] ) ] spids: [852] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 850] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTFIELDNUM) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$RESULT'))} {(Lit_Other ':')} {(SQ <'\\([^:]*\\)'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [867 879] ) ) } spids: [865] ) ] spids: [865] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTFIELD) op: Equal rhs: { (DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ($ VSub_Name '$OUTFIELDNUM') ) } spids: [883] ) ] spids: [883] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [863 896] ) ] spids: [768] ) spids: [765 768] ) (FuncDef name: do_aggreg body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(SQ <Xsum>)} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGGREG) op: Equal rhs: {(SQ <total>)} spids: [939] ) ] spids: [939] ) ] spids: [16777215 937] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(SQ <Xavg>)} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGGREG) op: Equal rhs: {(SQ <'(total/cnt)'>)} spids: [965] ) ] spids: [965] ) ] spids: [945 963] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(SQ <Xcount>)} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGGREG) op: Equal rhs: {(SQ <cnt>)} spids: [991] ) ] spids: [991] ) ] spids: [971 989] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(SQ <Xmin>)} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGGREG) op: Equal rhs: {(SQ <min>)} spids: [1017] ) ] spids: [1017] ) ] spids: [997 1015] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(SQ <Xmax>)} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGGREG) op: Equal rhs: {(SQ <max>)} spids: [1043] ) ] spids: [1043] ) ] spids: [1023 1041] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1049 1056] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X('))} {(-o)} {(DQ (X) ($ VSub_Number '$4'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X)'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Bad aggregate syntax'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[1099])] ) (C {(syntax)} {(select)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGGFIELD) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [1115] ) ] spids: [1115] ) (C {(shift)} {(4)}) (C {(lookup_field)} {(DQ ($ VSub_Name '$AGGFIELD'))}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')}) (SimpleCommand words: [{(echo)} {(DQ ('Bad field name (') ($ VSub_Number '$1') (')'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[1155])] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (While cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(0)} {(Lit_Other ']')})] body: (DoGroup children: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xwhere))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Break break>) ] ) terminator: <Op_Semi ';'> ) (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xorder))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Break break>) ] ) terminator: <Op_Semi ';'> ) (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xunion))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Break break>) ] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1178 1248] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTFIELD) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SUBSELECT) op: Equal rhs: {(DQ (Y))} spids: [1256] ) ] spids: [1256] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGGREGATE) op: Equal rhs: {(DQ (Y))} spids: [1263] ) ] spids: [1263] ) terminator: <Op_Semi ';'> ) (C {(select_)} {(DQ (select))} {(DQ ($ VSub_Name '$AGGFIELD'))} {(DQ (from))} {(DQ ($ VSub_Name '$TABLE'))} {(DQ ($ VSub_At '$@'))} ) ] ) spids: [1254 1292] ) (C {($ VSub_Name '$AWK')} {(-F) (DQ ('\t'))} { (SQ <'NR == 1 { min = $1; max = $1 }\n'> <'\t\t\t { cnt += 1; total += $1 }\n'> <'\t\t$1 < min { min = $1 }\n'> <'\t\t$1 > max { max = $1 }\n'> <'\t\tEND\t { printf "%s%s%s", "\\"", '> ) ($ VSub_Name '$AGGREG') (SQ <', "\\"" }'>) } ) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [1253 1318] ) } spids: [1252] ) ] spids: [1252] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$RESULT'))} {(Lit_Other ':')} {(SQ <'[^\t]*\t\\(.*\\)'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [1325 1337] ) } {(-lt)} {(10)} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ ($ VSub_Name '$AGGFIELD') ('\t10'))} spids: [1348] ) ] spids: [1348] ) ] spids: [16777215 1346] ) ] spids: [16777215 1355] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [916] ) spids: [913 916] ) (FuncDef name: do_join body: (BraceGroup children: [ (C {(update_view)} {(DQ ($ VSub_Number '$1'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1390] ) ] spids: [1390] ) (C {(lookup_field)} {(DQ ($ VSub_Number '$2'))}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')}) (SimpleCommand words: [ {(echo)} { (DQ ('Bad view specifcation (') ($ VSub_Number '$1') (.) ($ VSub_Number '$2') (')')) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[1428])] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:JFIELD1) op: Equal rhs: {(DQ ($ VSub_Name '$OUTFIELDNUM'))} spids: [1438] ) ] spids: [1438] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:JFIELD1L1) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(expr)} {($ VSub_Name '$JFIELD1')} {(-)} {(1)})] ) left_token: <Left_Backtick '`'> spids: [1446 1454] ) ) } spids: [1444] ) ] spids: [1444] ) (C {(update_view)} {(DQ ($ VSub_Number '$3'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [1465] ) ] spids: [1465] ) (C {(lookup_field)} {(DQ ($ VSub_Number '$4'))}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')}) (SimpleCommand words: [ {(echo)} { (DQ ('Bad view specifcation (') ($ VSub_Number '$3') (.) ($ VSub_Number '$4') (')')) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[1503])] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:JFIELD2) op: Equal rhs: {(DQ ($ VSub_Name '$OUTFIELDNUM'))} spids: [1513] ) ] spids: [1513] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:JFIELD2L1) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(expr)} {($ VSub_Name '$JFIELD2')} {(-)} {(1)})] ) left_token: <Left_Backtick '`'> spids: [1521 1529] ) ) } spids: [1519] ) ] spids: [1519] ) (Subshell child: (CommandList children: [ (Sentence child: (C {(grep)} {(DQ ('^') ($ VSub_Number '$2') ('\t'))} {($ VSub_Number '$1') (Lit_Other '@')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(grep)} {(-v)} {(DQ ('^') ($ VSub_Number '$2') ('\t'))} {($ VSub_Number '$1') (Lit_Other '@')} ) terminator: <Op_Semi ';'> ) (C {(grep)} {(-v)} {(DQ ('^') ($ VSub_Number '$4') ('\t'))} {($ VSub_Number '$3') (Lit_Other '@')} ) ] ) redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Number '$5') (Lit_Other '@')} spids: [1581] ) ] spids: [1534 1579] ) (SimpleCommand words: [ {(sort)} {(-t) (EscapedLiteralPart token:<Lit_EscapedChar '\\\t'>)} {(Lit_Other '+') ($ VSub_Name '$JFIELD2L1')} {($ VSub_Number '$3') (Lit_Tilde '~')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$')} spids: [1598] ) ] ) (Pipeline children: [ (C {(sort)} {(-t) (EscapedLiteralPart token:<Lit_EscapedChar '\\\t'>)} {(Lit_Other '+') ($ VSub_Name '$JFIELD1L1')} {($ VSub_Number '$1') (Lit_Tilde '~')} ) (SimpleCommand words: [ {(join)} {(-t) (EscapedLiteralPart token:<Lit_EscapedChar '\\\t'>)} {(-j1)} {($ VSub_Name '$JFIELD1')} {(-j2)} {($ VSub_Name '$JFIELD2')} {(-)} {(/tmp/) ($ VSub_Dollar '$$')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Number '$5') (Lit_Tilde '~')} spids: [1639] ) ] ) ] negated: F ) ] spids: [1380] ) spids: [1377 1380] ) (FuncDef name: update_view body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Number '$1') ('%'))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (Subshell child: (C {(do_join)} { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {($ VSub_Number '$1') (Lit_Other '%')})] ) left_token: <Left_Backtick '`'> spids: [1689 1694] ) } ) spids: [1685 1696] ) ] spids: [1662] ) spids: [1659 1662] ) (FuncDef name: where body: (BraceGroup children: [ (C {(shift)}) (While cond: [ (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(-a)} {(DQ ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (order))} {(-a)} {(DQ ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (union))} {(Lit_Other ']')} ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xselect))} {(Lit_Other ']')} ) ] action: [ (C {(set)} {(X)} { (CommandSubPart command_list: (CommandList children: [ (Subshell child: (CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SUBSELECT) op: Equal rhs: {(DQ (Y))} spids: [1792] ) ] spids: [1792] ) terminator: <Op_Semi ';'> ) (C {(select_)} {(DQ ($ VSub_At '$@'))}) ] ) spids: [1790 1803] ) ] ) left_token: <Left_Backtick '`'> spids: [1789 1804] ) } ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-eq)} {(0)} {(Lit_Other ']')} ) ] action: [(C {(shift)})] spids: [16777215 1822] ) ] else_action: [ (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [1827 1834] ) ] spids: [16777215 1782] ) ] spids: [16777215 1837] ) (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(and)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ ($ VSub_Name '$WHERE') (' && '))} spids: [1852] ) ] spids: [1852] ) ] spids: [1849 1850 1857 16777215] ) (case_arm pat_list: [{(or)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ ($ VSub_Name '$WHERE') (' || '))} spids: [1863] ) ] spids: [1863] ) ] spids: [1860 1861 1868 16777215] ) (case_arm pat_list: [{(not)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ ($ VSub_Name '$WHERE') (' !'))} spids: [1874] ) ] spids: [1874] ) ] spids: [1871 1872 1880 16777215] ) (case_arm pat_list: [{(Lit_Other '=')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ ($ VSub_Name '$WHERE') (' == '))} spids: [1886] ) ] spids: [1886] ) ] spids: [1883 1884 1891 16777215] ) (case_arm pat_list: [{(SQ <in>)}] action: [ (C {(shift)}) (C {(set)} {(X)} { (CommandSubPart command_list: (CommandList children: [ (Subshell child: (CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SUBSELECT) op: Equal rhs: {(SQ <Y>)} spids: [1909] ) ] spids: [1909] ) terminator: <Op_Semi ';'> ) (C {(select_)} {(DQ ($ VSub_At '$@'))}) ] ) spids: [1907 1920] ) ] ) left_token: <Left_Backtick '`'> spids: [1906 1921] ) } ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-eq)} {(0)} {(Lit_Other ']')} ) ] action: [(C {(shift)})] spids: [16777215 1939] ) ] else_action: [ (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [1944 1951] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INWHERE) op: Equal rhs: {(DQ )} spids: [1954] ) ] spids: [1954] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMP) op: Equal rhs: {(DQ ('=='))} spids: [1959] ) ] spids: [1959] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOGIC) op: Equal rhs: {(DQ ('||'))} spids: [1965] ) ] spids: [1965] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Name '$LAST'))} {(Lit_Other '=')} {(DQ (Xnot))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMP) op: Equal rhs: {(DQ ('='))} spids: [1988] ) ] spids: [1988] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOGIC) op: Equal rhs: {(DQ ('&&'))} spids: [1995] ) ] spids: [1995] ) ] ) (ForEach iter_name: VALUE do_arg_iter: T body: (DoGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Name '$INWHERE'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (X))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INWHERE) op: Equal rhs: { (DQ ($ VSub_Name '$INWHERE') (' ') ($ VSub_Name '$LOGIC') ) } spids: [2029] ) ] spids: [2029] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INWHERE) op: Equal rhs: { (DQ ($ VSub_Name '$INWHERE') (' (') ($ VSub_Name '$WHERE') ($ VSub_Name '$COMP') (' ') ($ VSub_Name '$VALUE') (') ') ) } spids: [2037] ) ] spids: [2037] ) ] spids: [2006 2049] ) spids: [16777215 16777215] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ ($ VSub_Name '$INWHERE'))} spids: [2052] ) ] spids: [2052] ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [1895 1897 2059 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(lookup_field)} {(DQ ($ VSub_Number '$1'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ ($ VSub_Name '$WHERE') (' ') ($ VSub_Name '$OUTFIELD'))} spids: [2072] ) ] spids: [2072] ) ] spids: [2062 2063 2078 16777215] ) ] spids: [1840 1846 2081] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2084] ) ] spids: [2084] ) (C {(shift)}) ] spids: [1761 2093] ) ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$WHERE'))} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ (' ( ') ($ VSub_Name '$WHERE') (' ) '))} spids: [2107] ) ] spids: [2107] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (SimpleCommand words: [{(echo)} {(DQ ("Missing 'where' clause"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2127])] ) (C {(syntax)} {(where)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [1716] ) spids: [1713 1716] ) (FuncDef name: help body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')}) ] action: [ (Sentence child: (SimpleCommand words: [{(echo)} {(DQ ('Ambiguous syntax, try:'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2182])] ) terminator: <Op_Semi ';'> ) (C {(syntax)} {(help)}) ] spids: [16777215 2174] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (all))} {(Lit_Other ']')} ) ] action: [ (Pipeline children: [ (SimpleCommand words: [ {(ls)} {(Lit_Other '*') (Lit_Other '@')} {(Lit_Other '*') (Lit_Other '%')} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2219] ) ] ) (C {(cut)} {(-d) (Lit_Other '@')} {(-f1)}) (C {(cut)} {(-d) (Lit_Other '%')} {(-f1)}) (C {(uniq)}) ] negated: F ) ] spids: [2192 2209] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (tables))} {(Lit_Other ']')} ) ] action: [ (Pipeline children: [ (SimpleCommand words: [ {(ls)} {(Lit_Other '*') (Lit_Other '@')} {(Lit_Other '*') (Lit_Other '%')} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2273] ) ] ) (C {(cut)} {(-d) (Lit_Other '@')} {(-f1)}) (C {(cut)} {(-d) (Lit_Other '%')} {(-f1)}) (C {(uniq)} {(-u)}) ] negated: F ) ] spids: [2245 2263] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (views))} {(Lit_Other ']')} ) ] action: [ (Pipeline children: [ (SimpleCommand words: [{(ls)} {(Lit_Other '*') (Lit_Other '%')}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2327] ) ] ) (C {(cut)} {(-d) (Lit_Other '%')} {(-f1)}) ] negated: F ) ] spids: [2302 2320] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (commands))} {(Lit_Other ']')} ) ] action: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('/p is print\n') ('/g is go(execute)\n') ('/q is quit\n') ('/e is edit\n') ('/i is include\n') ('/w is write\n') ('/r is reset(clear)\n') ('/s is shell\n') ('/p/g print and go\n') ( 'The number sign(#) may be used at the start of a line for comments.\n' ) } do_expansion: False here_end: END was_filled: T spids: [2362] ) ] ) ] spids: [2341 2358] ) ] else_action: [ (AndOr ops: [Op_DAmp] children: [ (C {(syntax)} {($ VSub_Number '$2')}) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [2380] ) ] spids: [2380] ) (C {(update_view)} {(DQ ($ VSub_Name '$TABLE'))}) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Number '$2') ('@'))} {(Lit_Other ']')}) ] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(echo)} {(DQ ($ VSub_Name '$NL') (' <') ($ VSub_Number '$2') ('>'))}) (C {(cat)} {(DQ ($ VSub_Number '$2') ('@'))}) ] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(-f)} {(DQ (${ VSub_Number 2) ('%'))} {(Lit_Other ']')}) (C {(echo)} {($ VSub_Name '$NOCR1')} {(DQ ($ VSub_Name '$NL') (' View:\t') ($ VSub_Name '$NOCR2'))} ) (C {(set)} {(X)} { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {($ VSub_Number '$2') (Lit_Other '%')})] ) left_token: <Left_Backtick '`'> spids: [2461 2466] ) } ) (C {(shift)}) (C {(echo)} { (DQ ($ VSub_Number '$1') (.) ($ VSub_Number '$2') (' = ') ($ VSub_Number '$3') (.) ($ VSub_Number '$4') ) } ) ] ) (C {(echo)} {(DQ ($ VSub_Name '$NL') (' Rows:\t')) (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(cat)} {($ VSub_Name '$TABLE') (Lit_Tilde '~')}) (C {(wc)} {(-l)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [2494 2505] ) } ) ] spids: [16777215 2408] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$TABLE') (' does not exist.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2517])] ) (C {(syntax)} {(help)}) ] spids: [2508 2526] ) ] spids: [2369 2529] ) ] spids: [2158] ) spids: [2155 2158] ) (FuncDef name: create body: (BraceGroup children: [ (C {(shift)}) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Number '$2') ('@'))} {(-o)} {(-f)} {(DQ ($ VSub_Number '$2') ('%'))} {(Lit_Other ']')} ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Table already exists.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2586])] ) ] spids: [16777215 2578] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xview))} {(-a)} {($ VSub_Pound '$#')} {(-gt)} {(2)} {(Lit_Other ']')} ) ] action: [ (C {(shift)}) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(6)} {(Lit_Other ']')}) ] action: [(C {(syntax)} {(create)})] spids: [16777215 2634] ) ] else_action: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X('))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Bad syntax'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [2669] ) ] ) (C {(syntax)} {(create)}) (ControlFlow token: <ControlFlow_Return return> ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE1) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Number '$3')} {(Lit_Other ':')} {(SQ <'\\([^\\.]*\\)'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [2687 2697] ) ) } spids: [2685] ) ] spids: [2685] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FIELD1) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Number '$3')} {(Lit_Other ':')} {(SQ <'[^\\.]*.\\(.*\\)'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [2703 2713] ) ) } spids: [2701] ) ] spids: [2701] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Name '$TABLE1'))} spids: [2717] ) ] spids: [2717] ) (C {(lookup_field)} {(DQ ($ VSub_Name '$FIELD1'))}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Bad table or field name'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [2751] ) ] ) (ControlFlow token: <ControlFlow_Return return> ) ] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$4'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X='))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Bad syntax'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [2784] ) ] ) (C {(syntax)} {(create)}) (ControlFlow token: <ControlFlow_Return return> ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE2) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Number '$5')} {(Lit_Other ':')} {(SQ <'\\([^\\.]*\\)'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [2802 2812] ) ) } spids: [2800] ) ] spids: [2800] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FIELD2) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Number '$5')} {(Lit_Other ':')} {(SQ <'[^\\.]*.\\(.*\\)'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [2818 2828] ) ) } spids: [2816] ) ] spids: [2816] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Name '$TABLE2'))} spids: [2832] ) ] spids: [2832] ) (C {(lookup_field)} {(DQ ($ VSub_Name '$FIELD2'))}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Bad table or field name'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [2866] ) ] ) (ControlFlow token: <ControlFlow_Return return> ) ] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X('))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Bad syntax'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [2899] ) ] ) (C {(syntax)} {(create)}) (ControlFlow token: <ControlFlow_Return return> ) ] ) (SimpleCommand words: [ {(echo)} { (DQ ($ VSub_Name '$TABLE1') (' ') ($ VSub_Name '$FIELD1') (' ') ($ VSub_Name '$TABLE2') (' ') ($ VSub_Name '$FIELD2') (' ') ($ VSub_Number '$1') ) } ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Number '$1') (Lit_Other '%')} spids: [2929] ) ] ) (C {(update_view)} {(DQ ($ VSub_Number '$1'))}) ] spids: [2641 2943] ) (C {(echo)} {(DQ (OK))}) ] spids: [2590 2616] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xtable))} {(-a)} {($ VSub_Pound '$#')} {(-ge)} {(5)} {(Lit_Other ']')} ) ] action: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$3'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X('))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Bad syntax'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3007])] ) (C {(syntax)} {(create)}) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [3023] ) ] spids: [3023] ) (C {(shift)} {(3)}) (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TABLE') (Lit_Other '@')} spids: [3034] ) ] ) (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TABLE') (Lit_Tilde '~')} spids: [3040] ) ] ) (While cond: [ (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ge)} {(2)} {(Lit_Other ']')}) ] body: (DoGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number '$1') ('\t') ($ VSub_Number '$2'))}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TABLE') (Lit_Other '@')} spids: [3070] ) ] ) (C {(shift)} {(2)}) ] spids: [3059 3081] ) ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X)'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Bad syntax'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3108])] ) (C {(rm)} {(-f)} {($ VSub_Name '$TABLE') (Lit_Other '[') (Lit_Other '@') (Lit_Tilde '~') (Lit_Other ']') } ) (C {(syntax)} {(create)}) (ControlFlow token:<ControlFlow_Return return>) ] ) (C {(echo)} {(DQ (OK))}) ] spids: [2953 2980] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(DQ ('Improper syntax (') ($ VSub_Number '$1') (')'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3155])] ) (C {(syntax)} {(create)}) ] spids: [3143 3164] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [2549] ) spids: [2546 2549] ) (FuncDef name: drop body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (table))} {(-a)} {(DQ ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (view))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Syntax error.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3228])] ) (C {(syntax)} {(drop)}) (ControlFlow token:<ControlFlow_Return return>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (table))} {(-a)} {(-f)} {(DQ ($ VSub_Number '$3') ('%'))} {(Lit_Other ']')} ) (SimpleCommand words: [ {(echo)} {(DQ ('Can not drop, ') ($ VSub_Number '$2') (' is a view, not a table'))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3276])] ) (ControlFlow token:<ControlFlow_Return return>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (view))} {(-a)} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Number '$3') ('%'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Can not drop, ') ($ VSub_Number '$2') (' is not a view'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3320])] ) (ControlFlow token:<ControlFlow_Return return>) ] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Number '$3') ('@'))} {(-o)} {(-f)} {(DQ ($ VSub_Number '$3') ('%'))} {(Lit_Other ']')} ) ] action: [ (C {(rm)} {(-f)} {($ VSub_Number '$3') (Lit_Other '@')} {($ VSub_Number '$3') (Lit_Tilde '~')} {($ VSub_Number '$3') (Lit_Other '%')} ) (C {(echo)} {(DQ (OK))}) ] spids: [16777215 3352] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(DQ ('No such table'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3383])] ) ] spids: [3375 3387] ) ] spids: [3187] ) spids: [3184 3187] ) (FuncDef name: insert body: (BraceGroup children: [ (C {(shift)}) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xinto))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Improper syntax (') ($ VSub_Number '$1') (')'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3439])] ) (C {(syntax)} {(insert)}) (ControlFlow token:<ControlFlow_Return return>) ] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [3458] ) ] spids: [3458] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(update_view)} {(DQ ($ VSub_Name '$TABLE'))}) (SimpleCommand words: [{(echo)} {(DQ ('Can not insert into a view'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3478])] ) (ControlFlow token:<ControlFlow_Return return>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$TABLE') ('@'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Table does not exist'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3507])] ) (ControlFlow token:<ControlFlow_Return return>) ] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ATTRIB) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(cat)} {($ VSub_Name '$TABLE') (Lit_Other '@')}) (C {(wc)} {(-l)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [3520 3531] ) ) } spids: [3518] ) ] spids: [3518] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:XASGN) op:Equal rhs:{(DQ )} spids:[3535])] spids: [3535] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XECHO) op: Equal rhs: {(DQ ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>))} spids: [3540] ) ] spids: [3540] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(-a)} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ ('X('))} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ATTRIB2) op: Equal rhs: {(DQ (0))} spids: [3575] ) ] spids: [3575] ) (C {(shift)}) (While cond: [ (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(-a)} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X)'))} {(Lit_Other ']')} ) ] body: (DoGroup children: [ (C {(lookup_field)} {(DQ ($ VSub_Number '$1'))}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')} ) (SimpleCommand words: [ {(echo)} {(DQ ('Bad field name. (') ($ VSub_Number '$1') (')'))} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [3644] ) ] ) (ControlFlow token: <ControlFlow_Return return> ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XASGN) op: Equal rhs: { (DQ ($ VSub_Name '$XASGN') (' X') ($ VSub_Name '$OUTFIELDNUM') ('=') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ('eval echo ') (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (1) (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (' ; shift;') ) } spids: [3655] ) ] spids: [3655] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ATTRIB2) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Name '$ATTRIB2')} {(Lit_Other '+')} {(1)} ) ] ) left_token: <Left_Backtick '`'> spids: [3674 3682] ) } spids: [3673] ) ] spids: [3673] ) ] spids: [3611 3685] ) ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X)'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Syntax error (') ($ VSub_Number '$1') (')'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3714])] ) (C {(syntax)} {(insert)}) (ControlFlow token:<ControlFlow_Return return>) ] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:POS) op: Equal rhs: {(DQ (1))} spids: [3733] ) ] spids: [3733] ) (While cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$POS'))} {(-le)} {(DQ ($ VSub_Name '$ATTRIB'))} {(Lit_Other ']')} ) ] body: (DoGroup children: [ (C {(eval)} {(X) ($ VSub_Name '$POS') (Lit_Other '=') (DQ )}) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$POS'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (1))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XECHO) op: Equal rhs: { (DQ ($ VSub_Name '$XECHO') (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (TAB) ) } spids: [3785] ) ] spids: [3785] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XECHO) op: Equal rhs: { (DQ ($ VSub_Name '$XECHO') (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (X) ($ VSub_Name '$POS') ) } spids: [3793] ) ] spids: [3793] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:POS) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Name '$POS')} {(Lit_Other '+')} {(1)}) ] ) left_token: <Left_Backtick '`'> spids: [3803 3811] ) } spids: [3802] ) ] spids: [3802] ) ] spids: [3756 3814] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XECHO) op: Equal rhs: { (DQ ($ VSub_Name '$XECHO') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ) } spids: [3817] ) ] spids: [3817] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ATTRIB) op: Equal rhs: {(DQ ($ VSub_Name '$ATTRIB2'))} spids: [3824] ) ] spids: [3824] ) ] spids: [16777215 3573] ) ] spids: [16777215 3830] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xselect))} {(Lit_Other ']')} ) ] action: [ (C {(eval)} {(set)} {(X)} { (DQ (CommandSubPart command_list: (CommandList children: [ (Subshell child: (CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SUBSELECT) op: Equal rhs: {(SQ <Y>)} spids: [3864] ) ] spids: [3864] ) terminator: <Op_Semi ';'> ) (C {(select_)} {(DQ ($ VSub_At '$@'))}) ] ) spids: [3862 3877] ) ] ) left_token: <Left_Backtick '`'> spids: [3861 3878] ) (' ') (Lit_Other '\\') (')') ) } ) (C {(shift)}) ] spids: [16777215 3852] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xvalues))} {(-o)} {(DQ (X) ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(SQ <'X('>)} {(Lit_Other ']')} ) ] action: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (SimpleCommand words: [{(echo)} {(DQ ('Improper syntax (') ($ VSub_Number '$1') (')'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3932])] ) (C {(syntax)} {(insert)}) (ControlFlow token:<ControlFlow_Return return>) ] ) ] spids: [3888 3922] ) ] else_action: [(C {(shift)} {(2)})] spids: [3948 3955] ) (ForEach iter_name: LAST do_arg_iter: T body: (DoGroup children: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)] spids: [3962 3970] ) spids: [16777215 16777215] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Name '$LAST'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ('X)'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Improper syntax'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[3999])] ) (C {(syntax)} {(insert)}) (ControlFlow token:<ControlFlow_Return return>) ] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {($ VSub_Pound '$#')} {(-)} {(1)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(Lit_Other '%')} {($ VSub_Name '$ATTRIB')} ) ] ) left_token: <Left_Backtick '`'> spids: [4018 4034] ) ) } {(-ne)} {(0)} {(Lit_Other ']')} ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Incorrect number of values.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[4052])] ) ] spids: [16777215 4044] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ROWS) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {($ VSub_Pound '$#')} {(-)} {(1)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(/)} {($ VSub_Name '$ATTRIB')} ) ] ) left_token: <Left_Backtick '`'> spids: [4060 4076] ) ) } spids: [4058] ) ] spids: [4058] ) (While cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(1)} {(Lit_Other ']')})] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$XASGN'))} {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) ] action: [ (SimpleCommand words: [ {(echo)} {($ VSub_Name '$NOCR1')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(eval)} {(echo)} {($ VSub_Number '$1')})] ) left_token: <Left_Backtick '`'> spids: [4122 4128] ) ($ VSub_Name '$NOCR2') ) } ] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TABLE') (Lit_Tilde '~')} spids: [4132] ) ] ) (C {(shift)}) (While cond: [ (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} { (EscapedLiteralPart token: <Lit_EscapedChar '\\('> ) } {($ VSub_Pound '$#')} {(-)} {(1)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(Lit_Other '%')} {($ VSub_Name '$ATTRIB')} ) ] ) left_token: <Left_Backtick '`'> spids: [4147 4163] ) ) } {(-ne)} {(0)} {(Lit_Other ']')} ) ] body: (DoGroup children: [ (SimpleCommand words: [ {(echo)} {($ VSub_Name '$NOCR1')} { (DQ ($ VSub_Name '$TAB') (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(echo)} {($ VSub_Number '$1')}) ] ) left_token: <Left_Backtick '`'> spids: [4182 4188] ) ($ VSub_Name '$NOCR2') ) } ] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TABLE') (Lit_Tilde '~')} spids: [4193] ) ] ) (C {(shift)}) ] spids: [4173 4202] ) ) (SimpleCommand words: [{(echo)} {(DQ )}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TABLE') (Lit_Tilde '~')} spids: [4210] ) ] ) ] spids: [16777215 4113] ) ] else_action: [ (C {(eval)} {($ VSub_Name '$XASGN')}) (SimpleCommand words: [{(eval)} {($ VSub_Name '$XECHO')}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TABLE') (Lit_Tilde '~')} spids: [4227] ) ] ) ] spids: [4216 4233] ) ] spids: [4093 4236] ) ) (C {(echo)} {(DQ ('(') ($ VSub_Name '$ROWS') (' rows)'))}) ] spids: [4056 4249] ) ] spids: [3407] ) spids: [3404 3407] ) (FuncDef name: delete body: (BraceGroup children: [ (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [4275] ) ] spids: [4275] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(update_view)} {(DQ ($ VSub_Name '$TABLE'))}) (SimpleCommand words: [{(echo)} {(DQ ('You can not delete from a view.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[4295])] ) (ControlFlow token:<ControlFlow_Return return>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$TABLE') ('@'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$TABLE') (' does not exit.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[4327])] ) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WHERE) op:Equal rhs:{(DQ )} spids:[4335])] spids: [4335] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$3'))} {(Lit_Other '=')} {(DQ (Xwhere))} {(Lit_Other ']')} ) ] action: [ (C {(shift)} {(2)}) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(where)} {(DQ ($ VSub_At '$@'))}) (SimpleCommand words: [ {($ VSub_Name '$AWK')} {(-F) (DQ ('\t'))} { (DQ ('! ') ($ VSub_Name '$WHERE') (' { cnt += 1 ; print } \n') ('\t\t\tEND { printf ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('( %1d rows.)') (EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (n) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (', (NR - cnt) ') ('\t\t\t>') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (/tmp/) ($ VSub_Dollar '$$') (row) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' }') ) } {($ VSub_Name '$TABLE') (Lit_Tilde '~')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$')} spids: [4406] ) ] ) (C {(mv)} {(/tmp/) ($ VSub_Dollar '$$')} {($ VSub_Name '$TABLE') (Lit_Tilde '~')} ) (C {(cat)} {(/tmp/) ($ VSub_Dollar '$$') (row)}) ] ) ] spids: [16777215 4358] ) ] else_action: [ (C {(echo)} {(SQ <'('>) (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(cat)} {($ VSub_Name '$TABLE') (Lit_Tilde '~')}) (C {(wc)} {(-l)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [4439 4450] ) (SQ <' rows)'>) } ) (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TABLE') (Lit_Tilde '~')} spids: [4457] ) ] ) ] spids: [4432 4463] ) ] spids: [4269] ) spids: [4266 4269] ) (FuncDef name: update body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [4486] ) ] spids: [4486] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(update_view)} {(DQ ($ VSub_Name '$TABLE'))}) (SimpleCommand words: [{(echo)} {(DQ ('Can not update a view.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[4506])] ) (ControlFlow token:<ControlFlow_Return return>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$TABLE') ('@'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$TABLE') (' does not exit.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[4536])] ) (ControlFlow token:<ControlFlow_Return return>) ] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$3'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xset))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Improper syntax.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[4568])] ) (C {(syntax)} {(update)}) (ControlFlow token:<ControlFlow_Return return>) ] ) (C {(shift)} {(3)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ASSIGN) op:Equal rhs:{(DQ )} spids:[4589])] spids: [4589] ) (While cond: [ (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(-a)} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xwhere))} {(Lit_Other ']')} ) ] body: (DoGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(lookup_field)} {(DQ ($ VSub_Number '$1'))}) (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ ('X='))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ASSIGN) op: Equal rhs: {(DQ ($ VSub_Name '$ASSIGN') (' ; '))} spids: [4649] ) ] spids: [4649] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ASSIGN) op: Equal rhs: {(DQ ($ VSub_Name '$ASSIGN') (' ') ($ VSub_Name '$OUTFIELD'))} spids: [4656] ) ] spids: [4656] ) (C {(shift)}) ] spids: [4621 4667] ) ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WHERE) op:Equal rhs:{(DQ )} spids:[4670])] spids: [4670] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xwhere))} {(Lit_Other ']')} ) ] action: [ (AndOr ops: [Op_DPipe] children: [ (C {(where)} {(DQ ($ VSub_At '$@'))}) (ControlFlow token:<ControlFlow_Return return>) ] ) ] spids: [16777215 4694] ) ] spids: [16777215 4708] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (SimpleCommand words: [ {($ VSub_Name '$AWK')} {(-F) (DQ ('\t'))} { (DQ ('BEGIN { OFS = ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('\t') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' }\n') ('\t\t') ($ VSub_Name '$WHERE') (' \t{ ') ($ VSub_Name '$ASSIGN') ('; cnt += 1 }\n') ('\t\t\t{ print } \n') ('\t\tEND \t{ printf ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('( %1d rows)') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (n) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (', cnt >') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (/tmp/) ($ VSub_Dollar '$$') (row) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' }') ) } {($ VSub_Name '$TABLE') (Lit_Tilde '~')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$')} spids: [4750] ) ] ) (C {(mv)} {(/tmp/) ($ VSub_Dollar '$$')} {($ VSub_Name '$TABLE') (Lit_Tilde '~')}) (C {(cat)} {(/tmp/) ($ VSub_Dollar '$$') (row)}) ] ) ] spids: [4483] ) spids: [4480 4483] ) (FuncDef name: select_ body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$DEBUG'))} {(Lit_Other '=')} {(DQ (Y))} {(Lit_Other ']')} ) (C {(set)} {(-x)}) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:UNION) op:Equal rhs:{(DQ (Y))} spids:[4819])] spids: [4819] ) (While cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$UNION'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INAGG) op: Equal rhs: {(DQ )} spids: [4845] ) ] spids: [4845] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FROM) op:Equal rhs:{(DQ )} spids:[4850])] spids: [4850] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:UNION) op: Equal rhs: {(DQ )} spids: [4855] ) ] spids: [4855] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ )} spids: [4860] ) ] spids: [4860] ) (ForEach iter_name: ATABLE do_arg_iter: T body: (DoGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Name '$ATABLE'))} {(Lit_Other '=')} {(DQ (Xwhere))} {(Lit_Other ']')} ) (ControlFlow token: <ControlFlow_Break break> ) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Name '$ATABLE'))} {(Lit_Other '=')} {(DQ (Xorder))} {(Lit_Other ']')} ) (ControlFlow token: <ControlFlow_Break break> ) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Name '$ATABLE'))} {(Lit_Other '=')} {(DQ (Xunion))} {(Lit_Other ']')} ) (ControlFlow token: <ControlFlow_Break break> ) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Name '$ATABLE'))} {(Lit_Other '=')} {(DQ (Xfrom))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FROM) op: Equal rhs: {(DQ (Y))} spids: [4950] ) ] spids: [4950] ) (ControlFlow token: <ControlFlow_Continue continue> ) ] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$FROM'))} {(Lit_Other ']')}) ] action: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$ATABLE') ('@'))} {(Lit_Other ']')} ) (SimpleCommand words: [ {(echo)} {(DQ ($ VSub_Name '$ATABLE') (' does not exist.'))} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [4998] ) ] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$TABLE'))} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Name '$ATABLE'))} spids: [5023] ) ] spids: [5023] ) ] spids: [16777215 5021] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:JTABLE) op: Equal rhs: {(DQ ($ VSub_Name '$TABLE'))} spids: [5031] ) ] spids: [5031] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PREV) op: Equal rhs: {(DQ )} spids: [5037] ) ] spids: [5037] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PPREV) op: Equal rhs: {(DQ )} spids: [5042] ) ] spids: [5042] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FOUND) op: Equal rhs: {(DQ )} spids: [5047] ) ] spids: [5047] ) (ForEach iter_name: GETJ do_arg_iter: T body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$PREV'))} {(Lit_Other '=')} {(DQ ('='))} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Name '$JTABLE'))} spids: [5080] ) ] spids: [5080] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(lookup_field)} {(DQ ($ VSub_Name '$PPREV'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Name '$ATABLE'))} spids: [5095] ) ] spids: [5095] ) (C {(lookup_field)} {(DQ ($ VSub_Name '$GETJ'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FOUND) op: Equal rhs: {(DQ (Y1))} spids: [5112] ) ] spids: [5112] ) (ControlFlow token: <ControlFlow_Break break> ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Name '$ATABLE'))} spids: [5123] ) ] spids: [5123] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(lookup_field)} {(DQ ($ VSub_Name '$PPREV'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ ($ VSub_Name '$JTABLE'))} spids: [5138] ) ] spids: [5138] ) (C {(lookup_field)} {(DQ ($ VSub_Name '$GETJ'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FOUND) op: Equal rhs: {(DQ (Y2))} spids: [5155] ) ] spids: [5155] ) (ControlFlow token: <ControlFlow_Break break> ) ] ) ] spids: [16777215 5077] ) ] spids: [16777215 5166] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PPREV) op: Equal rhs: {(DQ ($ VSub_Name '$PREV'))} spids: [5169] ) ] spids: [5169] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PREV) op: Equal rhs: {(DQ ($ VSub_Name '$GETJ'))} spids: [5175] ) ] spids: [5175] ) ] spids: [5057 5181] ) spids: [16777215 16777215] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$FOUND'))} {(Lit_Other ']')} ) (C {(echo)} {(DQ ('Join not found, ') (Lit_Other '\\') (c))}) (SimpleCommand words: [{(echo)} {(DQ ('try reordering tables.'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [5214] ) ] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$FOUND'))} {(Lit_Other '=')} {(DQ (Y1))} {(Lit_Other ']')} ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ($ VSub_Name '$JTABLE') ('\t') ($ VSub_Name '$PPREV') ('\t') ($ VSub_Name '$ATABLE') ('\t') ($ VSub_Name '$GETJ') ('\t/tmp/') ($ VSub_Dollar '$$') (join2) ) } ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$') (join2) (Lit_Other '%') } spids: [5259] ) ] ) ] spids: [16777215 5241] ) ] else_action: [ (SimpleCommand words: [ {(echo)} { (DQ ($ VSub_Name '$ATABLE') ('\t') ($ VSub_Name '$PPREV') ('\t') ($ VSub_Name '$JTABLE') ('\t') ($ VSub_Name '$GETJ') ('\t/tmp/') ($ VSub_Dollar '$$') (join2) ) } ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$') (join2) (Lit_Other '%') } spids: [5284] ) ] ) ] spids: [5266 5291] ) (C {(update_view)} {(/tmp/) ($ VSub_Dollar '$$') (join2)}) (C {(mv)} {(/tmp/) ($ VSub_Dollar '$$') (join2) (Lit_Tilde '~')} {(/tmp/) ($ VSub_Dollar '$$') (join) (Lit_Tilde '~')} ) (C {(mv)} {(/tmp/) ($ VSub_Dollar '$$') (join2) (Lit_Other '@')} {(/tmp/) ($ VSub_Dollar '$$') (join) (Lit_Other '@')} ) (SimpleCommand words: [ {(expr)} {(DQ ($ VSub_Name '$RESULT'))} {(Lit_Other ':')} {(SQ <'[^:]:*\\(.*\\)'>)} ] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$') (join) (Lit_Other '@')} spids: [5339] ) ] ) (Pipeline children: [ (C {(cut)} {(-d) (EscapedLiteralPart token: <Lit_EscapedChar '\\\t'> ) } {(-f1)} {(/tmp/) ($ VSub_Dollar '$$') (join) (Lit_Tilde '~')} ) (SimpleCommand words: [ {(paste)} {(/tmp/) ($ VSub_Dollar '$$') (join) (Lit_Tilde '~')} {(-)} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$')} spids: [5371] ) ] ) ] negated: F ) (C {(mv)} {(/tmp/) ($ VSub_Dollar '$$')} {(/tmp/) ($ VSub_Dollar '$$') (join) (Lit_Tilde '~')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLE) op: Equal rhs: {(DQ (/tmp/) ($ VSub_Dollar '$$') (join))} spids: [5387] ) ] spids: [5387] ) ] spids: [5029 5395] ) ] spids: [16777215 4971] ) ] spids: [16777215 5398] ) ] spids: [4870 5401] ) spids: [16777215 16777215] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$FROM'))} {(Lit_Other ']')} ) (SimpleCommand words: [{(echo)} {(DQ ('Syntax error.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[5422])] ) (C {(syntax)} {(select)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) (C {(update_view)} {(DQ ($ VSub_Name '$TABLE'))}) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DISTINCT) op: Equal rhs: {(DQ )} spids: [5449] ) ] spids: [5449] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xdistinct))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DISTINCT) op: Equal rhs: {(DQ (Y))} spids: [5471] ) ] spids: [5471] ) (C {(shift)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FIELDS) op: Equal rhs: {(DQ )} spids: [5481] ) ] spids: [5481] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PRINTF) op: Equal rhs: {(DQ )} spids: [5486] ) ] spids: [5486] ) (While cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xfrom))} {(Lit_Other ']')} ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(SQ <'X*'>)} {(Lit_Other ']')} ) ] action: [ (C {(shift)}) (C {(set)} {(X)} { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(cat)} {($ VSub_Name '$TABLE') (Lit_Other '@')}) (C {(cut)} {(-d) (EscapedLiteralPart token: <Lit_EscapedChar '\\\t'> ) } {(-f1)} ) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [5540 5554] ) } {(DQ ($ VSub_At '$@'))} ) (C {(shift)}) ] spids: [16777215 5531] ) ] else_action: [ (C {(lookup_field)} {(DQ ($ VSub_Number '$1'))}) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')} ) ] action: [ (C {(do_aggreg)} {(DQ ($ VSub_At '$@'))}) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-eq)} {(0)} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INAGG) op: Equal rhs: {(DQ (Y))} spids: [5615] ) ] spids: [5615] ) (C {(shift)} {(3)}) ] spids: [16777215 5613] ) ] else_action: [ (SimpleCommand words: [ {(echo)} { (DQ ('Bad field name (') ($ VSub_Number '$1') (')')) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [5638] ) ] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [5626 5647] ) ] spids: [16777215 5589] ) ] spids: [16777215 5650] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$FIELDS'))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FIELDS) op: Equal rhs: {(DQ ($ VSub_Name '$FIELDS') (','))} spids: [5663] ) ] spids: [5663] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FIELDS) op: Equal rhs: { (DQ ($ VSub_Name '$FIELDS') (' ') ($ VSub_Name '$OUTFIELD')) } spids: [5670] ) ] spids: [5670] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$SUBSELECT'))} {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) ] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$PRINTF'))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PRINTF) op: Equal rhs: {(DQ ('|'))} spids: [5708] ) ] spids: [5708] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WIDTH) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$RESULT'))} {(Lit_Other ':')} {(SQ <'[^\t]*\t\\(.*\\)'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [5715 5729] ) } spids: [5714] ) ] spids: [5714] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PRINTF) op: Equal rhs: { (DQ ($ VSub_Name '$PRINTF') ('%-') ($ VSub_Name '$WIDTH') (.) (${ VSub_Name WIDTH) ('s|') ) } spids: [5732] ) ] spids: [5732] ) ] spids: [16777215 5694] ) ] else_action: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$AGGREGATE'))} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PRINTF) op: Equal rhs: { (DQ ($ VSub_Name '$PRINTF') (EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('%s') (EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') ) } spids: [5762] ) ] spids: [5762] ) ] spids: [16777215 5760] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PRINTF) op: Equal rhs: { (DQ ($ VSub_Name '$PRINTF') ('%s') (Lit_Other '\\') (n) ) } spids: [5776] ) ] spids: [5776] ) ] spids: [5774 5785] ) ] spids: [5745 5788] ) (C {(shift)}) ] spids: [5565 5794] ) ] spids: [5510 5797] ) ) (C {(shift)} {(2)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ )} spids: [5805] ) ] spids: [5805] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:SORT) op:Equal rhs:{(DQ )} spids:[5810])] spids: [5810] ) (While cond: [ (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(0)} {(Lit_Other ']')}) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xwhere))} {(Lit_Other ']')} ) ] action: [ (C {(where)} {(DQ ($ VSub_At '$@'))}) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')} ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ ($ VSub_Name '$WHERE') (' || NR == 1'))} spids: [5880] ) ] spids: [5880] ) (C {(shift)}) ] spids: [16777215 5850] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xorder))} {(Lit_Other ']')} ) ] action: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xby))} {(Lit_Other ']')} ) (SimpleCommand words: [ {(echo)} {(DQ ('Syntax error (') ($ VSub_Number '$2') (')'))} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [5938] ) ] ) (C {(syntax)} {(select)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) (C {(shift)} {(2)}) (While cond: [ (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(-a)} {(DQ ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (union))} {(Lit_Other ']')} ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xasc))} {(-a)} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xdesc))} {(-a)} {(DQ (X) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (Xnum))} {(Lit_Other ']')} ) ] action: [ (C {(lookup_field)} {(DQ ($ VSub_Number '$1'))}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} {(-ne)} {(0)} {(Lit_Other ']')} ) (SimpleCommand words: [ {(echo)} { (DQ ('Bad field name (') ($ VSub_Number '$1') (')') ) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [6075] ) ] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$SORT'))} {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SORT) op: Equal rhs: { (DQ ('sort -t') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ('\t') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') ) } spids: [6103] ) ] spids: [6103] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SORTL) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} { ($ VSub_Name '$OUTFIELDNUM' ) } {(-)} {(1)} ) ] ) left_token: <Left_Backtick '`'> spids: [6115 6123] ) ) } spids: [6113] ) ] spids: [6113] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SORT) op: Equal rhs: { (DQ ($ VSub_Name '$SORT') (' +') ($ VSub_Name '$SORTL') ) } spids: [6127] ) ] spids: [6127] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (Xnum))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SORT) op: Equal rhs: {(DQ (${ VSub_Name SORT) (n))} spids: [6154] ) ] spids: [6154] ) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (Xdesc))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SORT) op: Equal rhs: {(DQ (${ VSub_Name SORT) (r))} spids: [6182] ) ] spids: [6182] ) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$3'))} {(Lit_Other '=')} {(DQ (Xdesc))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SORT) op: Equal rhs: {(DQ (${ VSub_Name SORT) (r))} spids: [6210] ) ] spids: [6210] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SORT) op: Equal rhs: { (DQ ($ VSub_Name '$SORT') (' -') ($ VSub_Name '$OUTFIELDNUM') ) } spids: [6219] ) ] spids: [6219] ) ] spids: [16777215 6042] ) ] spids: [16777215 6227] ) (C {(shift)}) ] spids: [5987 6233] ) ) ] spids: [5890 5908] ) (if_arm cond: [ (C {(Lit_Other '[')} {(DQ (X) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (Xunion))} {(Lit_Other ']')} ) ] action: [ (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:UNION) op: Equal rhs: {(DQ (Y))} spids: [6259] ) ] spids: [6259] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [6236 6254] ) ] else_action: [(C {(shift)})] spids: [6268 6273] ) ] spids: [5828 6276] ) ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$INAGG'))} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHERE) op: Equal rhs: {(DQ ('NR == 1'))} spids: [6289] ) ] spids: [6289] ) ] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$DISTINCT'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) ] action: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$SORT'))} {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DIST) op: Equal rhs: { (DQ ('sort | uniq | tee /tmp/') ($ VSub_Dollar '$$') (row) ) } spids: [6334] ) ] spids: [6334] ) ] spids: [16777215 6332] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DIST) op: Equal rhs: {(DQ ('uniq | tee /tmp/') ($ VSub_Dollar '$$') (row))} spids: [6344] ) ] spids: [6344] ) ] spids: [6342 6352] ) ] spids: [16777215 6314] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DIST) op: Equal rhs: {(DQ (cat))} spids: [6357] ) ] spids: [6357] ) ] spids: [6355 6363] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLEFILE) op: Equal rhs: {(DQ ($ VSub_Name '$TABLE') ('~'))} spids: [6368] ) ] spids: [6368] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$SORT'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) (Pipeline children: [ (C {(cat)} {($ VSub_Name '$TABLE') (Lit_Tilde '~')}) (SimpleCommand words: [{(eval)} {(DQ ($ VSub_Name '$SORT'))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$')} spids: [6404] ) ] ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TABLEFILE) op: Equal rhs: {(DQ (/tmp/) ($ VSub_Dollar '$$'))} spids: [6412] ) ] spids: [6412] ) ] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$SUBSELECT'))} {(Lit_Other ']')}) ] action: [ (Pipeline children: [ (C {($ VSub_Name '$AWK')} {(-F) (DQ ('\t'))} { (DQ ($ VSub_Name '$WHERE') (' {printf ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_Name '$PRINTF') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (', ') ($ VSub_Name '$FIELDS') (' }') ) } {($ VSub_Name '$TABLEFILE')} ) (C {(eval)} {(DQ ($ VSub_Name '$DIST'))}) ] negated: F ) ] spids: [16777215 6431] ) ] else_action: [ (AndOr ops: [Op_DAmp] children: [ (Pipeline children: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$QUIET'))} {(-o)} {(DQ ($ VSub_Name '$INAGG'))} {(Lit_Other '=')} {(DQ (Y))} {(Lit_Other ']')} ) ] action: [ (Subshell child: (CommandList children: [ (Sentence child: (C {(set)} {(X)} { (CommandSubPart command_list: (CommandList children: [ (C {(cut)} {(-d) (EscapedLiteralPart token: <Lit_EscapedChar '\\\t'> ) } {(-f1)} {($ VSub_Name '$TABLE') (Lit_Other '@')} ) ] ) left_token: <Left_Backtick '`'> spids: [6500 6510] ) } ) terminator: <Op_Semi ';'> ) (C {(shift)}) (Sentence child: (C {(echo)} {($ VSub_Name '$NOCR1')} { (DQ (-) ($ VSub_Number '$1') (-) ($ VSub_Name '$NOCR2') ) } ) terminator: <Op_Semi ';'> ) (C {(shift)}) (Sentence child: (ForEach iter_name: HEADING do_arg_iter: T body: (DoGroup children: [ (C {(echo)} {($ VSub_Name '$NOCR1')} { (DQ ($ VSub_Name '$TAB') (-) ($ VSub_Name '$HEADING') (-) ($ VSub_Name '$NOCR2') ) } ) ] spids: [6540 6558] ) spids: [16777215 16777215] ) terminator: <Op_Semi ';'> ) (C {(echo)} {(DQ )}) ] ) spids: [6494 6567] ) ] spids: [16777215 6490] ) ] spids: [16777215 6570] ) (C {($ VSub_Name '$AWK')} {(-F) (DQ ('\t'))} { (DQ ($ VSub_Name '$WHERE') (' { cnt += 1 ; printf ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_Name '$PRINTF') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (n) (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (', ') ($ VSub_Name '$FIELDS') (' }\n') ('\t\t\tEND\t{ printf ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ('( %1d rows)') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (n) (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (', (cnt - 1) ') ('\t\t\t>') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (/tmp/) ($ VSub_Dollar '$$') (row) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' }') ) } {(-)} {($ VSub_Name '$TABLEFILE')} ) (C {(eval)} {(DQ ($ VSub_Name '$DIST'))}) ] negated: F ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$DISTINCT'))} {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) ] action: [(C {(cat)} {(/tmp/) ($ VSub_Dollar '$$') (row)})] spids: [16777215 6644] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:X) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(expr)} { (EscapedLiteralPart token: <Lit_EscapedChar '\\`'> ) (cat) } {(/tmp/) ($ VSub_Dollar '$$') (row)} ) (C {(wc)} {(-l) (EscapedLiteralPart token: <Lit_EscapedChar '\\`'> ) } {(-)} {(1)} ) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [6656 6674] ) } spids: [6655] ) ] spids: [6655] ) (C {(echo)} {(SQ <'('>) ($ VSub_Name '$X') (SQ <' rows)'>)}) ] spids: [6653 6689] ) ] ) ] spids: [6463 6692] ) ] spids: [4842 6695] ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [4793] ) spids: [4790 4793] ) (While cond: [(C {(Lit_Other ':')})] body: (DoGroup children: [ (While cond: [(C {(Lit_Other ':')})] body: (DoGroup children: [ (C {(echo)} {($ VSub_Name '$NOCR1')} {(DQ ('* ') ($ VSub_Name '$NOCR2'))}) (AndOr ops: [Op_DPipe] children: [(C {(read)} {(LINE)}) (ControlFlow token:<ControlFlow_Exit exit>)] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SQLPART) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$LINE'))} {(Lit_Other ':')} {(SQ <'\\(..*\\)/.$'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [6755 6767] ) ) } spids: [6753] ) ] spids: [6753] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$SQLPART'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) ] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NEW'))} {(Lit_Other '=')} {(DQ (Y))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: {(DQ )} spids: [6807] ) ] spids: [6807] ) ] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$LINE'))} {(Lit_Other ':')} {(SQ <'.*/p/g$'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [6817 6829] ) ) } {(-ne)} {(0)} {(Lit_Other ']')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: {(DQ ($ VSub_Name '$_CMD')) (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$LINE'))} {(Lit_Other ':')} {(SQ <'\\(.*\\)/p/g$'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [6846 6858] ) (DQ ($ VSub_Name '$NL')) } spids: [6842] ) ] spids: [6842] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LINE) op: Equal rhs: {(DQ (/p/g))} spids: [6864] ) ] spids: [6864] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NEW) op: Equal rhs: {(DQ )} spids: [6870] ) ] spids: [6870] ) ] spids: [16777215 6839] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: {(DQ ($ VSub_Name '$_CMD')) (DQ ($ VSub_Name '$SQLPART')) (DQ ($ VSub_Name '$NL')) } spids: [6878] ) ] spids: [6878] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LINE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$LINE'))} {(Lit_Other ':')} {(SQ <'.*\\(/.\\)$'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [6892 6904] ) ) } spids: [6890] ) ] spids: [6890] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NEW) op: Equal rhs: {(DQ )} spids: [6908] ) ] spids: [6908] ) ] spids: [6875 6913] ) ] spids: [16777215 6788] ) ] spids: [16777215 6916] ) (Case to_match: {(DQ ($ VSub_Name '$LINE'))} arms: [ (case_arm pat_list: [{(/p)} {(p)}] action: [(C {(echo)} {(DQ ($ VSub_Name '$_CMD'))})] spids: [6929 6932 6939 16777215] ) (case_arm pat_list: [{(/g)} {(g)}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [6942 6945 6948 16777215] ) (case_arm pat_list: [{(/p/g)} {(pg)}] action: [ (Sentence child: (C {(echo)} {(DQ ($ VSub_Name '$_CMD'))}) terminator: <Op_Semi ';'> ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [6951 6954 6966 16777215] ) (case_arm pat_list: [{(/r)} {(r)}] action: [ (Sentence child: (C {(echo)} {(DQ (reset))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: {(DQ )} spids: [6982] ) ] spids: [6982] ) ] spids: [6969 6972 6985 16777215] ) (case_arm pat_list: [{(/s)} {(s)}] action: [ (Sentence child: (C {(umask)} {($ VSub_Name '$UMASK')}) terminator: <Op_Semi ';'> ) (Sentence child: (C {($ VSub_Name '$SHELL')}) terminator: <Op_Semi ';'> ) (C {(umask)} {(0000)}) ] spids: [6988 6991 7006 16777215] ) (case_arm pat_list: [{(/e)} {(e)}] action: [ (Sentence child: (C {(umask)} {($ VSub_Name '$UMASK')}) terminator: <Op_Semi ';'> ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$_CMD'))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/tmp/) ($ VSub_Dollar '$$')} spids: [7026] ) ] ) (Sentence child: (C {($ VSub_Name '$EDITOR')} {(/tmp/) ($ VSub_Dollar '$$')}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(/tmp/) ($ VSub_Dollar '$$')})] ) left_token: <Left_Backtick '`'> spids: [7040 7045] ) ) } spids: [7038] ) ] spids: [7038] ) (C {(umask)} {(0000)}) ] spids: [7009 7012 7052 16777215] ) (case_arm pat_list: [{(/i)} {(i)}] action: [ (C {(echo)} {($ VSub_Name '$NOCR1')} {(DQ ('Enter include file: ') ($ VSub_Name '$NOCR2'))} ) (C {(read)} {(LINE)}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$LINE'))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: { (DQ ($ VSub_Name '$_CMD') (CommandSubPart command_list: (CommandList children: [(C {(cat)} {($ VSub_Name '$LINE')})] ) left_token: <Left_Backtick '`'> spids: [7092 7096] ) ($ VSub_Name '$NL') ) } spids: [7089] ) ] spids: [7089] ) (C {(echo)} {(DQ ($ VSub_Name '$LINE') (' included'))}) ] ) ] spids: [7055 7058 7109 16777215] ) (case_arm pat_list: [{(/w)} {(w)}] action: [ (C {(echo)} {($ VSub_Name '$NOCR1')} {(DQ ('Enter output file: ') ($ VSub_Name '$NOCR2'))} ) (C {(read)} {(LINE)}) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$LINE'))} {(Lit_Other ']')}) (C {(umask)} {($ VSub_Name '$UMASK')}) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$_CMD'))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ ($ VSub_Name '$LINE'))} spids: [7158] ) ] ) (C {(umask)} {(0000)}) (C {(echo)} {(DQ ($ VSub_Name '$LINE') (' written'))}) ] ) ] spids: [7112 7115 7180 16777215] ) (case_arm pat_list: [{(/q)} {(q)}] action: [(ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})] spids: [7183 7186 7191 16777215] ) (case_arm pat_list: [ {(EscapedLiteralPart token:<Lit_EscapedChar '\\#'>) (Lit_Other '*')} ] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NEW'))} {(Lit_Other '=')} {(DQ (Y))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: {(DQ )} spids: [7215] ) ] spids: [7215] ) ] ) ] spids: [7195 7197 7219 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NEW'))} {(Lit_Other '=')} {(DQ (Y))} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: {(DQ )} spids: [7241] ) ] spids: [7241] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_CMD) op: Equal rhs: { (DQ ($ VSub_Name '$_CMD') ($ VSub_Name '$LINE') ($ VSub_Name '$NL') ) } spids: [7246] ) ] spids: [7246] ) ] spids: [7222 7223 7252 16777215] ) ] spids: [6919 6925 7255] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NEW) op:Equal rhs:{(DQ )} spids:[7258])] spids: [7258] ) ] spids: [6730 7263] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CMD) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$_CMD'))}) (C {(sed)} {(-e)} { (DQ (s/) (Lit_Other '\\') ("'/") (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (/g) ) } {(-e)} {(SQ <'s/\\"\\([^\\"]*\\)\\"/\\"\\\\\\"\\1\\\\\\"\\"/g'>)} {(-e)} {(SQ <'s/\\([<>!=][<>!=]*\\)/ \\1 /g'>)} {(-e)} {(SQ <'s/</\\\\\\</g'>)} {(-e)} {(SQ <'s/>/\\\\\\>/g'>)} {(-e)} {(SQ <'s/\\*/\\\\\\*/g'>)} {(-e)} {(SQ <'s/(/ \\\\\\( /g'>)} {(-e)} {(SQ <'s/)/ \\\\\\) /g'>)} ) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [7268 7346] ) } spids: [7267] ) ] spids: [7267] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$CMD'))} {(Lit_Other ']')}) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(DQ ($ VSub_Name '$_IFS') (','))} spids: [7364] ) ] spids: [7364] ) (C {(eval)} {(set)} {(X)} {($ VSub_Name '$CMD')}) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(DQ ($ VSub_Name '$_IFS'))} spids: [7383] ) ] spids: [7383] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NEW) op:Equal rhs:{(DQ (Y))} spids:[7389])] spids: [7389] ) (Case to_match: {($ VSub_Number '$1')} arms: [ (case_arm pat_list: [{(select)}] action: [(C {(select_)} {(DQ ($ VSub_At '$@'))})] spids: [7402 7403 7410 16777215] ) (case_arm pat_list: [{(create)}] action: [(C {(create)} {(DQ ($ VSub_At '$@'))})] spids: [7414 7415 7422 16777215] ) (case_arm pat_list: [{(delete)}] action: [(C {(delete)} {(DQ ($ VSub_At '$@'))})] spids: [7425 7426 7433 16777215] ) (case_arm pat_list: [{(drop)}] action: [(C {(drop)} {(DQ ($ VSub_At '$@'))})] spids: [7436 7437 7444 16777215] ) (case_arm pat_list: [{(insert)}] action: [(C {(insert)} {(DQ ($ VSub_At '$@'))})] spids: [7447 7448 7455 16777215] ) (case_arm pat_list: [{(update)}] action: [(C {(update)} {(DQ ($ VSub_At '$@'))})] spids: [7458 7459 7466 16777215] ) (case_arm pat_list: [{(edit)}] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')}) (C {($ VSub_Name '$EDITOR')} {($ VSub_Number '$2') (Lit_Other '@')}) ] ) ] spids: [7469 7470 7486 16777215] ) (case_arm pat_list: [{(help)}] action: [(C {(help)} {(DQ ($ VSub_At '$@'))})] spids: [7489 7490 7497 16777215] ) (case_arm pat_list: [{(print)}] action: [ (C {(select_)} {(DQ (select))} {(SQ <'*'>)} {(DQ (from))} {(DQ ($ VSub_Number '$2'))}) ] spids: [7500 7501 7520 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Missing or unrecognized command.'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[7532])] ) ] spids: [7523 7524 7535 16777215] ) ] spids: [7395 7399 7538] ) ] spids: [6722 7540] ) ) ] )