(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:errors) op:Equal rhs:{(0)} spids:[13])] spids: [13] ) (C {(source)} {(../1/library.sh)}) (FuncDef name: validate body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:varname) op: Equal rhs: {($ VSub_Number '$1')} spids: [32] ) ] spids: [32] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:varvalue) op: Equal rhs: {($ VSub_Number '$2')} spids: [37] ) ] spids: [37] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {($ VSub_Name '$varvalue')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (BracedVarSub token: <VSub_Name varvalue> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: { (BracedVarSub token: <VSub_Name varvalue> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {('?')} ) spids: [68 72] ) } ) spids: [65 73] ) ) } {(Lit_Other '=')} {(DQ (/))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-x)} {($ VSub_Name '$varvalue')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ('** ') ($ VSub_Name '$varname') (' set to ') ($ VSub_Name '$varvalue') (', but I cannot find executable.') ) } ) (DParen child: (UnaryAssign op_id: Node_PostDPlus child: (LhsName name:errors) ) ) ] spids: [-1 103] ) ] spids: [-1 126] ) ] spids: [-1 86] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(in_path)} {($ VSub_Name '$varvalue')} {($ VSub_Name '$PATH')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ('** ') ($ VSub_Name '$varname') (' set to ') ($ VSub_Name '$varvalue') (', but I cannot find it in PATH.') ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errors) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$errors')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [158 167] ) } spids: [157] ) ] spids: [157] ) ] spids: [-1 142] ) ] spids: [-1 170] ) ] spids: [129 173] ) ] spids: [-1 57] ) ] spids: [-1 177] ) ] spids: [29] ) spids: [25 28] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-x)} { (BracedVarSub token: <VSub_Name SHELL> suffix_op: (StringUnary op_id: VTest_ColonQMark arg_word: {(DQ ('Cannot proceed without SHELL being defined.'))} ) spids: [197 203] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ('** SHELL set to ') ($ VSub_Name '$SHELL') (', but I cannot find that executable.') ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errors) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$errors')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [222 231] ) } spids: [221] ) ] spids: [221] ) ] spids: [-1 209] ) ] spids: [-1 233] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} { (BracedVarSub token: <VSub_Name HOME> suffix_op: (StringUnary op_id: VTest_ColonQMark arg_word: {(DQ ('You need to have your HOME set to your home directory'))} ) spids: [244 250] ) } {(Lit_Other ']')} ) ] action: [ (C {(echo)} {(DQ ('** HOME set to ') ($ VSub_Name '$HOME') (", but it's not a directory."))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errors) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$errors')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [267 276] ) } spids: [266] ) ] spids: [266] ) ] spids: [-1 254] ) ] spids: [-1 278] ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:oldIFS) op: Equal rhs: {($ VSub_Name '$IFS')} spids: [285] ) ] spids: [285] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:IFS) op:Equal rhs:{(DQ (':'))} spids:[289])] spids: [289] ) (ForEach iter_name: directory iter_words: [{($ VSub_Name '$PATH')}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {($ VSub_Name '$directory')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('** PATH contains invalid directory ') ($ VSub_Name '$directory'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errors) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$errors')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [335 344] ) } spids: [334] ) ] spids: [334] ) ] spids: [-1 323] ) ] spids: [-1 347] ) ] spids: [306 349] ) spids: [303 -1] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:IFS) op:Equal rhs:{($ VSub_Name '$oldIFS')} spids:[352])] spids: [352] ) (C {(validate)} {(DQ (EDITOR))} {($ VSub_Name '$EDITOR')}) (C {(validate)} {(DQ (MAILER))} {($ VSub_Name '$MAILER')}) (C {(validate)} {(DQ (PAGER))} {($ VSub_Name '$PAGER')}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$errors')} {(-gt)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ('Errors encountered. Please notify sysadmin for help.'))})] spids: [-1 412] ) ] else_action: [(C {(echo)} {(DQ ('Your environment checks out fine.'))})] spids: [421 430] ) (C {(exit)} {(0)}) ] )