(FuncDef name: validint body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:number) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [27] ) ] spids: [27] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:min) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [33] ) ] spids: [33] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:max) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [39] ) ] spids: [39] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {($ VSub_Name '$number')} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (SimpleCommand words: [{(echo)} {(DQ ("You didn't enter anything. Please enter a number."))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) terminator: <Op_Semi ';'> ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 58] ) ] spids: [16777215 77] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (BracedVarSub token: <VSub_Name number> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: { (BracedVarSub token: <VSub_Name number> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('?')}) spids: [93 97] ) } ) spids: [90 98] ) ) } {(Lit_Other '=')} {(DQ (-))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:testvalue) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name number> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('?')}) spids: [116 120] ) ) } spids: [114] ) ] spids: [114] ) ] spids: [16777215 111] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:testvalue) op: Equal rhs: {(DQ ($ VSub_Name '$number'))} spids: [130] ) ] spids: [130] ) ] spids: [127 136] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nodigits) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$testvalue')}) (C {(sed)} {(SQ <'s/[[:digit:]]//g'>)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [147 159] ) ) } spids: [145] ) ] spids: [145] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {($ VSub_Name '$nodigits')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Invalid number format! Only digits, no commas, spaces, etc'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 183] ) ] spids: [16777215 201] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {($ VSub_Name '$min')} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$number'))} {(-lt)} {(DQ ($ VSub_Name '$min'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ($ VSub_Name '$number') (' is too small: smallest acceptable value is ') ($ VSub_Name '$min') ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 245] ) ] spids: [16777215 265] ) ] spids: [16777215 220] ) ] spids: [16777215 268] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {($ VSub_Name '$max')} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$number'))} {(-gt)} {(DQ ($ VSub_Name '$max'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('Your value is too big: largest acceptable value is ') ($ VSub_Name '$max') ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 310] ) ] spids: [16777215 329] ) ] spids: [16777215 285] ) ] spids: [16777215 332] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [11] ) spids: [7 10] )