(BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Cron>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRAM_NAME='> name:PROGRAM_NAME) op: assign_op.Equal rhs: {(DQ <DietPi-Cron>)} spids: [100] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [107] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PREVIOUS_MENU_SELECTION='> name: PREVIOUS_MENU_SELECTION ) op: assign_op.Equal rhs: {(DQ <cron.hourly>)} spids: [111] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: {<0>} spids: [117] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {<0>} spids: [121] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aCRON_TIME='> name:aCRON_TIME) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [125] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDAY_OF_THE_WEEK_TEXT='> name: aDAY_OF_THE_WEEK_TEXT ) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <Monday>)} {(DQ <Tuesday>)} {(DQ <Wednesday>)} {(DQ <Thursday>)} {(DQ <Friday>)} {(DQ <Saturday>)} {(DQ <Sunday>)} ] ) } spids: [130] ) ] redirects: [] ) (command.ShFunction name: Read_Cron_Times body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 0>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.hourly>)}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [184] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 1>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.daily>)}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [219] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 2>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.daily>)}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [249] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 3>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.weekly>)}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [284] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 4>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.weekly>)}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [314] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 5>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.weekly>)}) (C {<awk>} {(SQ <'{print $5}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [344] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 6>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.monthly>)}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [379] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 7>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.monthly>)}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [409] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 8>} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/crontab'>}) (C {<grep>} {<-m1>} {(SQ <cron.monthly>)}) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [439] ) ] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <valid>)}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] spids: [502 527] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [548] ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Write_Cron_Times body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<_EOF_>} here_end_span_id: 653 stdin_parts: [ <'#Please use dietpi-cron to change cron start times\n'> <'SHELL=/bin/sh\n'> <'PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\n'> <'\n'> <'# m h dom mon dow user command\n'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) <' * * * * root cd / && run-parts --report /etc/cron.hourly\n'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) <' '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) < ' * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )\n' > (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) <' '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>}) right: <Id.Right_DollarBrace '}'> ) <' * * '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 5>}) right: <Id.Right_DollarBrace '}'> ) < ' root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )\n' > (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 6>}) right: <Id.Right_DollarBrace '}'> ) <' '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 7>}) right: <Id.Right_DollarBrace '}'> ) <' '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 8>}) right: <Id.Right_DollarBrace '}'> ) < ' * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )\n' > ] ) ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/etc/crontab'>} ) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Input_Cron_Minute body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number 1)}) (C {<local>} {<Id.Lit_VarLike 'min_value='> <0>}) (C {<local>} {<Id.Lit_VarLike 'max_value='> <59>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--inputbox>} { (DQ <'Please enter a value for MINUTE:'> <Id.Lit_BadBackslash '\\'> <'n - Valid range ('> ($ Id.VSub_DollarName min_value) <' - '> ($ Id.VSub_DollarName max_value) <')'> ) } {<9>} {<50>} {(DQ ($ Id.VSub_DollarName input_value))} {<--title>} {(DQ <'Set Minute'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [686] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [727] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName OPTION)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName OPTION)} right: {($ Id.VSub_DollarName min_value)} ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: {($ Id.VSub_DollarName OPTION)} right: {($ Id.VSub_DollarName max_value)} ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'input_value='> name: input_value ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [803] ) ] redirects: [] ) ] spids: [753 800] ) ] else_action: [(C {<Info_Input_Not_Valid_Integer>})] redirects: [] ) ] spids: [731 745] ) ] else_action: [] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName input_value)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Input_Cron_Hour body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number 1)}) (C {<local>} {<Id.Lit_VarLike 'min_value='> <0>}) (C {<local>} {<Id.Lit_VarLike 'max_value='> <23>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--inputbox>} { (DQ <'Please enter a value for HOUR (24h):'> <Id.Lit_BadBackslash '\\'> <'n - Valid range ('> ($ Id.VSub_DollarName min_value) <' - '> ($ Id.VSub_DollarName max_value) <')'> ) } {<9>} {<50>} {(DQ ($ Id.VSub_DollarName input_value))} {<--title>} {(DQ <'Set Hour'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [856] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [897] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName OPTION)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName OPTION)} right: {($ Id.VSub_DollarName min_value)} ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: {($ Id.VSub_DollarName OPTION)} right: {($ Id.VSub_DollarName max_value)} ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'input_value='> name: input_value ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [973] ) ] redirects: [] ) ] spids: [923 970] ) ] else_action: [(C {<Info_Input_Not_Valid_Integer>})] redirects: [] ) ] spids: [901 915] ) ] else_action: [] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName input_value)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Input_Cron_DayOfWeek body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number 1)}) (C {<local>} {<Id.Lit_VarLike 'min_value='> <1>}) (C {<local>} {<Id.Lit_VarLike 'max_value='> <7>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ <'Day of the Week'>)} {<--menu>} {(DQ <'Please select a day of the week.'>)} {<--cancel-button>} {(DQ <Cancel>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName input_value))} {<15>} {<45>} {<7>} {(DQ <1>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT> var_name: aDAY_OF_THE_WEEK_TEXT bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ <2>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT> var_name: aDAY_OF_THE_WEEK_TEXT bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ <3>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT> var_name: aDAY_OF_THE_WEEK_TEXT bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ <4>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT> var_name: aDAY_OF_THE_WEEK_TEXT bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ <5>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT> var_name: aDAY_OF_THE_WEEK_TEXT bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ <6>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT> var_name: aDAY_OF_THE_WEEK_TEXT bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 5>}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ <7>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT> var_name: aDAY_OF_THE_WEEK_TEXT bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 6>}) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [1026] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'input_value='> name: input_value ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [1194] ) ] redirects: [] ) ] spids: [1177 1191] ) ] else_action: [] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName input_value)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Input_Cron_DayOfMonth body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number 1)}) (C {<local>} {<Id.Lit_VarLike 'min_value='> <1>}) (C {<local>} {<Id.Lit_VarLike 'max_value='> <28>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--inputbox>} { (DQ <'Please enter a value for DAY of the MONTH:'> <Id.Lit_BadBackslash '\\'> <'n - Valid range ('> ($ Id.VSub_DollarName min_value) <' - '> ($ Id.VSub_DollarName max_value) <')'> <Id.Lit_BadBackslash '\\'> <'n - eg: 11 = the 11th day of month'> ) } {<10>} {<50>} {(DQ ($ Id.VSub_DollarName input_value))} {<--title>} {(DQ <'Set Day of Month'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [1238] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1281] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName OPTION)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName OPTION)} right: {($ Id.VSub_DollarName min_value)} ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: {($ Id.VSub_DollarName OPTION)} right: {($ Id.VSub_DollarName max_value)} ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'input_value='> name: input_value ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [1357] ) ] redirects: [] ) ] spids: [1307 1354] ) ] else_action: [(C {<Info_Input_Not_Valid_Integer>})] redirects: [] ) ] spids: [1285 1299] ) ] else_action: [] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName input_value)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Info_Input_Not_Valid_Integer body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<whiptail>} {<--title>} {(DQ <'Invalid Value'>)} {<--msgbox>} {(DQ ($ Id.VSub_DollarName OPTION) <' is an invalid value.'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<9>} {<60>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<whiptail>} {<--title>} {(DQ <'Exit '> ($ Id.VSub_DollarName PROGRAM_NAME) <'?'>)} {<--yesno>} {(DQ <'Exit '> ($ Id.VSub_DollarName PROGRAM_NAME) <'?'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<9>} {<55>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1471] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<-1>} spids: [1496] ) ] redirects: [] ) ] spids: [1475 1489] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [1507] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Main body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--menu>} { (DQ < 'This program allows you to change the date and times for starting each cron job.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'n- Example:'> <Id.Lit_BadBackslash '\\'> < 'nIf you set cron.daily to 22 hours and 20 minutes, all scripts in /etc/cron.daily/* will be run at 10:20pm' > ) } {<--cancel-button>} {(DQ <Exit>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName PREVIOUS_MENU_SELECTION))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<18>} {<70>} {<5>} {(DQ <cron.hourly>)} { (DQ <'Every Hour at '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) <' Minutes'> ) } {(DQ <cron.daily>)} { (DQ <'Every Day at '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <' Hours and '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) <' Minutes'> ) } {(DQ <cron.weekly>)} { (DQ <'Every '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT> var_name: aDAY_OF_THE_WEEK_TEXT bracket_op: (bracket_op.ArrayIndex expr: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr: {<Id.Lit_Digits 5>} ) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) ) } ) right: <Id.Right_DollarBrace '}'> ) <' at '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>}) right: <Id.Right_DollarBrace '}'> ) <' Hours and '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) <' Minutes'> ) } {(DQ <cron.monthly>)} { (DQ <'On Day '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 8>}) right: <Id.Right_DollarBrace '}'> ) <' of the month at '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 7>}) right: <Id.Right_DollarBrace '}'> ) <' Hours and '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 6>}) right: <Id.Right_DollarBrace '}'> ) <' Minutes'> ) } {(DQ <Apply>)} {(DQ <'Saves your cron start times and restarts service.'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [1525] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1709] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PREVIOUS_MENU_SELECTION='> name: PREVIOUS_MENU_SELECTION ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [1731] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{(DQ <cron.hourly>)}] action: [ (C {<Input_Cron_Minute>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 0>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1761] ) ] redirects: [] ) ] spids: [1745 1748 1769 -1] ) (case_arm pat_list: [{(DQ <cron.daily>)}] action: [ (C {<Input_Cron_Hour>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 2>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1788] ) ] redirects: [] ) (C {<Input_Cron_Minute>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 1>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1807] ) ] redirects: [] ) ] spids: [1772 1775 1815 -1] ) (case_arm pat_list: [{(DQ <cron.weekly>)}] action: [ (C {<Input_Cron_DayOfWeek>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 5>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 5>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1834] ) ] redirects: [] ) (C {<Input_Cron_Hour>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 4>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1853] ) ] redirects: [] ) (C {<Input_Cron_Minute>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 3>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1872] ) ] redirects: [] ) ] spids: [1818 1821 1880 -1] ) (case_arm pat_list: [{(DQ <cron.monthly>)}] action: [ (C {<Input_Cron_DayOfMonth>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 8>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 8>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1899] ) ] redirects: [] ) (C {<Input_Cron_Hour>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 7>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 7>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1918] ) ] redirects: [] ) (C {<Input_Cron_Minute>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCRON_TIME> var_name: aCRON_TIME bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 6>}) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aCRON_TIME['> name: aCRON_TIME index: {<Id.Lit_Digits 6>} ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1937] ) ] redirects: [] ) ] spids: [1883 1886 1945 -1] ) (case_arm pat_list: [{(DQ <Apply>)}] action: [ (C {<Write_Cron_Times>}) (C {<systemctl>} {<restart>} {<cron>}) (C {<whiptail>} {<--title>} {(DQ <Completed>)} {<--msgbox>} {(DQ <'Your Cron start times have been saved and applied.'>)} {<9>} {<60>} ) ] spids: [1948 1951 1992 -1] ) ] redirects: [] ) ] spids: [1713 1727] ) ] else_action: [(C {<Menu_Exit>})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<Read_Cron_Times>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName TARGETMENUID)} right: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<clear>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Main>})] spids: [2071 2085] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<unset>} {<aDAY_OF_THE_WEEK_TEXT>}) (C {<unset>} {<aCRON_TIME>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] redirects: [] right: <Id.Lit_RBrace '}'> )