(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLIST='> name:FLIST) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ROOT) <'/etc/syslist'>} spids: [82] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEFAULT='> name:DEFAULT) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ROOT) <'/bin '> ($ Id.VSub_DollarName ROOT) <'/usr/bin '> ($ Id.VSub_DollarName ROOT) <'/etc '> ($ Id.VSub_DollarName ROOT) <'/lib '> ($ Id.VSub_DollarName ROOT) <'/usr/lib'> ) } spids: [86] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FOUND='> name:FOUND) op: assign_op.Equal rhs: {(DQ )} spids: [100] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOVOLD='> name:MOVOLD) op: assign_op.Equal rhs: {(DQ )} spids: [104] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ECHO='> name:ECHO) op: assign_op.Equal rhs: {<echo>} spids: [108] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {<'/usr/bin'>} spids: [111] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG) op: assign_op.Equal rhs: {<off>} spids: [114] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: {(DQ <'eval echo \'usage: install [options] file [dir1 ...]\'; exit 2'>)} spids: [117] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-lt>} {<2>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {($ Id.VSub_DollarName USAGE)})] spids: [123 137] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MFLAG='> name:MFLAG) op: assign_op.Equal rhs: {<off>} spids: [145] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UFLAG='> name:UFLAG) op: assign_op.Equal rhs: {<off>} spids: [148] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GFLAG='> name:GFLAG) op: assign_op.Equal rhs: {<off>} spids: [151] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODE='> name:MODE) op: assign_op.Equal rhs: {<755>} spids: [155] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GRP='> name:GRP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<id>}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Colon ':'>} { (DQ <'.*gid=[0-9]*('> <Id.Lit_BadBackslash '\\'> <'(..*'> <Id.Lit_BadBackslash '\\'> <')) .*'> ) } ) right: <Id.Backtick_Right '`'> ) } spids: [158] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName GRP)}) (C {<sed>} {<-e>} {(SQ <'s/) fsid.*//p'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [191] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWN='> name:OWN) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<id>}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Colon ':'>} { (DQ <'.*uid=[0-9]*('> <Id.Lit_BadBackslash '\\'> <'(..*'> <Id.Lit_BadBackslash '\\'> <')) .*'> ) } ) right: <Id.Backtick_Right '`'> ) } spids: [210] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWNER='> name:OWNER) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName OWN)}) (C {<sed>} {<-e>} {(SQ <'s/) .*//p'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [243] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName GROUP))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<id>}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Colon ':'>} { (DQ <'.*gid='> <Id.Lit_BadBackslash '\\'> <'([0-9]*'> <Id.Lit_BadBackslash '\\'> <').*'> ) } ) right: <Id.Backtick_Right '`'> ) } spids: [277] ) ] redirects: [] ) ] spids: [262 274] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName OWNER))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWNER='> name:OWNER) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<id>}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Colon ':'>} { (DQ <'.*uid='> <Id.Lit_BadBackslash '\\'> <'([0-9]*'> <Id.Lit_BadBackslash '\\'> <').*'> ) } ) right: <Id.Backtick_Right '`'> ) } spids: [327] ) ] redirects: [] ) ] spids: [312 324] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OWNER))} {<Id.Lit_Equals '='>} {<root>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOTFLAG='> name:ROOTFLAG) op: assign_op.Equal rhs: {<on>} spids: [379] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWNER='> name:OWNER) op: assign_op.Equal rhs: {<bin>} spids: [383] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: {<bin>} spids: [387] ) ] redirects: [] ) ] spids: [362 376] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOTFLAG='> name:ROOTFLAG) op: assign_op.Equal rhs: {<off>} spids: [393] ) ] redirects: [] ) ] redirects: [] ) (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName FLAG)} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Case to_match: {($ Id.VSub_DollarName i)} arms: [ (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [ (C {<echo>} { (DQ < 'install: The -c, -f, -n options each require a directory following!' > ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [434 436 448 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG) op: assign_op.Equal rhs: {<off>} spids: [454] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [451 452 459 -1] ) ] redirects: [] ) ] spids: [411 424] ) ] else_action: [] redirects: [] ) (command.Case to_match: {($ Id.VSub_DollarName i)} arms: [ (case_arm pat_list: [{<-c>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -c dir: illegal option with '> ($ Id.VSub_DollarName ARG) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [478 501] ) (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-i>} {<-o>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-o>} {<-o>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-n>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -c dir: illegal option with '> ($ Id.VSub_DollarName arg) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [518 550] ) (if_arm cond: (condition.Shell commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>})] ) action: [ (C {<echo>} {(DQ <'install: -c option must have at least 3 args!'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [567 578] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'direct='> name:direct) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [596] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG) op: assign_op.Equal rhs: {<on>} spids: [600] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARG='> name:ARG) op: assign_op.Equal rhs: {<-c>} spids: [604] ) ] redirects: [] ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] redirects: [] ) ] spids: [475 476 615 -1] ) (case_arm pat_list: [{<-f>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -f dir: illegal option with '> ($ Id.VSub_DollarName ARG) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [621 644] ) (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-i>} {<-o>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-n>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -f dir: illegal option with '> ($ Id.VSub_DollarName arg) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [661 684] ) (if_arm cond: (condition.Shell commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>})] ) action: [ (C {<echo>} {(DQ <'install: -f option must have at least 3 args!'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [701 712] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'direct='> name:direct) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [730] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG) op: assign_op.Equal rhs: {<on>} spids: [734] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARG='> name:ARG) op: assign_op.Equal rhs: {<-f>} spids: [738] ) ] redirects: [] ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] redirects: [] ) ] spids: [618 619 749 -1] ) (case_arm pat_list: [{<-i>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -i: illegal option with '> ($ Id.VSub_DollarName ARG) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [755 787] ) (if_arm cond: (condition.Shell commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>})] ) action: [ (C {<echo>} {(DQ <'install: -i option requires at least 3 args!'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [804 815] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEFAULT='> name:DEFAULT) op: assign_op.Equal rhs: {(DQ )} spids: [833] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg) op: assign_op.Equal rhs: {<-i>} spids: [838] ) ] redirects: [] ) (C {<shift>}) ] redirects: [] ) ] spids: [752 753 846 -1] ) (case_arm pat_list: [{<-o>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -o: illegal option with '> ($ Id.VSub_DollarName ARG) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [852 875] ) (if_arm cond: (condition.Shell commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<2>})] ) action: [(C {($ Id.VSub_DollarName USAGE)})] spids: [892 903] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOVOLD='> name:MOVOLD) op: assign_op.Equal rhs: {<yes>} spids: [912] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg) op: assign_op.Equal rhs: {<-o>} spids: [916] ) ] redirects: [] ) (C {<shift>}) ] redirects: [] ) ] spids: [849 850 924 -1] ) (case_arm pat_list: [{<-n>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -n dir: illegal option with '> ($ Id.VSub_DollarName ARG) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [930 962] ) (if_arm cond: (condition.Shell commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>})] ) action: [ (C {<echo>} {(DQ <'install: -n option requires at least 3 args!'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [979 990] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTRES='> name:LASTRES) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [1008] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG) op: assign_op.Equal rhs: {<on>} spids: [1012] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FOUND='> name:FOUND) op: assign_op.Equal rhs: {<n>} spids: [1016] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg) op: assign_op.Equal rhs: {<-n>} spids: [1020] ) ] redirects: [] ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] redirects: [] ) ] spids: [927 928 1031 -1] ) (case_arm pat_list: [{<-d>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -d: illegal option with '> ($ Id.VSub_DollarName ARG) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [1037 1060] ) (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-i>} {<-o>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-o>} {<-o>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-n>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'install: -d: illegal option with '> ($ Id.VSub_DollarName arg) <' option!'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [1077 1109] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARG='> name:ARG) op: assign_op.Equal rhs: {<-d>} spids: [1129] ) ] redirects: [] ) (C {<shift>}) ] redirects: [] ) ] spids: [1034 1035 1137 -1] ) (case_arm pat_list: [{<-s>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<2>})] ) action: [(C {($ Id.VSub_DollarName USAGE)})] spids: [1143 1154] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ECHO='> name:ECHO) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} spids: [1163] ) ] redirects: [] ) (C {<shift>}) ] redirects: [] ) ] spids: [1140 1141 1171 -1] ) (case_arm pat_list: [{<-u>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName ROOTFLAG)} {<Id.Lit_Equals '='>} {<off>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} {(DQ <'install: -u option available only to root -- ignored'>)}) ] spids: [1177 1190] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWNER='> name:OWNER) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [1203] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UFLAG='> name:UFLAG) op: assign_op.Equal rhs: {<on>} spids: [1207] ) ] redirects: [] ) (C {($ Id.VSub_DollarName ECHO)} {<new>} {<owner>} {<is>} {($ Id.VSub_DollarName OWNER)} ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG) op: assign_op.Equal rhs: {<on>} spids: [1225] ) ] redirects: [] ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] spids: [1174 1175 1233 -1] ) (case_arm pat_list: [{<-g>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName ROOTFLAG)} {<Id.Lit_Equals '='>} {<off>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} {(DQ <'install: -g option available only to root -- ignored'>)}) ] spids: [1239 1252] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [1265] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GFLAG='> name:GFLAG) op: assign_op.Equal rhs: {<on>} spids: [1269] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG) op: assign_op.Equal rhs: {<on>} spids: [1276] ) ] redirects: [] ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] spids: [1236 1237 1284 -1] ) (case_arm pat_list: [{<-m>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODE='> name:MODE) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [1290] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MFLAG='> name:MFLAG) op: assign_op.Equal rhs: {<on>} spids: [1294] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG) op: assign_op.Equal rhs: {<on>} spids: [1298] ) ] redirects: [] ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] spids: [1287 1288 1306 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [1309 1310 1313 -1] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-d>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName i)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName i)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {($ Id.VSub_DollarName ECHO)} {(DQ <'directory '> ($ Id.VSub_DollarName i) <' created'>)} ) (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName i)}) (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName i)}) (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName i)}) ] spids: [1361 1374] ) ] else_action: [ (C {<echo>} {(DQ <'install: mkdir '> ($ Id.VSub_DollarName i) <' failed '>)}) ] redirects: [] ) ] spids: [1338 1351] ) ] else_action: [ (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName i)}) (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName i)}) (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName i)}) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] spids: [1322 1335] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILEP='> name:FILEP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} spids: [1454] ) (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILE='> name:FILE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName i)}) (C {<sed>} {<-e>} {(DQ <'s/.*'> <Id.Lit_BadBackslash '\\'> <'///'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [1457] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Case to_match: {($ Id.VSub_Number 2)} arms: [ (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [(C {($ Id.VSub_DollarName USAGE)})] spids: [1512 1514 1518 -1] ) (case_arm pat_list: [{(DQ )}] action: [(C {<Id.Lit_Colon ':'>})] spids: [1521 1523 1527 -1] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-f>} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} {<-o>} {<-f>} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <'/'> ($ Id.VSub_DollarName FILE) } ) ] ) action: [ (command.Case to_match: {($ Id.VSub_DollarName ARG)} arms: [ (case_arm pat_list: [{<-c>}] action: [ (C {<echo>} { (DQ <'install: '> ($ Id.VSub_DollarName FILE) <' already exists in '> ($ Id.VSub_DollarName direct) ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] spids: [1564 1565 1580 -1] ) (case_arm pat_list: [{<-f>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GRP='> name:GRP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<ls>} {<-l>} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) } ) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [1586] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWN='> name:OWN) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<ls>} {<-l>} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) } ) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [1608] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MOVOLD))} {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<mv>} {<-f>} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} {($ Id.VSub_DollarName direct) <'/OLD'> ($ Id.VSub_DollarName FILE)} ) (C {<cp>} {($ Id.VSub_DollarName direct) <'/OLD'> ($ Id.VSub_DollarName FILE) } {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {($ Id.VSub_DollarName ECHO)} { (DQ ($ Id.VSub_DollarName FILE) <' moved to '> ($ Id.VSub_DollarName direct) <'/OLD'> ($ Id.VSub_DollarName FILE) ) } ) ] spids: [1672 1685] ) ] else_action: [ (C {<echo>} { (DQ <'install: mv '> ($ Id.VSub_DollarName direct) <'/OLD'> ($ Id.VSub_DollarName FILE) <' '> ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <' failed'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] redirects: [] ) ] spids: [1630 1645] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<cp>} {($ Id.VSub_DollarName FILEP)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) } ) ] ) action: [ (C {<chgrp>} {($ Id.VSub_DollarName GRP)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} ) (C {<chown>} {($ Id.VSub_DollarName OWN)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) } ) ] spids: [1761 1776] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) } ) ] spids: [1792 1807] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName UFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) } ) ] spids: [1822 1837] ) ] else_action: [] redirects: [] ) (C {($ Id.VSub_DollarName ECHO)} { (DQ ($ Id.VSub_DollarName FILEP) <' installed as '> ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) ) } ) ] spids: [1728 1739] ) ] else_action: [ (C {<echo>} { (DQ <'install: cp '> ($ Id.VSub_DollarName FILEP) <' '> ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <' failed '> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> ) ] spids: [1583 1584 1889 -1] ) ] redirects: [] ) ] spids: [1533 1554] ) ] else_action: [ (C {<cp>} {($ Id.VSub_DollarName FILEP)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {($ Id.VSub_DollarName ECHO)} { (DQ ($ Id.VSub_DollarName FILEP) <' installed as '> ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) ) } ) (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} ) (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} ) (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} ) ] spids: [1907 1920] ) ] else_action: [ (C {<echo>} { (DQ <'install: cp '> ($ Id.VSub_DollarName FILEP) <' '> ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <' failed '> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] redirects: [] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] spids: [1480 1502] ) ] else_action: [] redirects: [] ) (C {<shift>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE) op: assign_op.Equal rhs: {(DQ )} spids: [1996] ) ] redirects: [] ) (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}]) body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName i)} arms: [ (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [(C {($ Id.VSub_DollarName USAGE)})] spids: [2018 2020 2024 -1] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHOLD='> name:PUTHOLD) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<find>} {($ Id.VSub_DollarName i)} {<-follow>} {<-name>} {($ Id.VSub_DollarName FILE)} {<-type>} {<f>} {<-print>} ) right: <Id.Backtick_Right '`'> ) } spids: [2030] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<echo>} {($ Id.VSub_DollarName PUTHOLD)}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Colon ':'>} {(SQ <'\\([^ ]*\\)'>)} ) right: <Id.Backtick_Right '`'> ) } spids: [2052] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [2084 2101] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-r>} {($ Id.VSub_DollarName FLIST)} {<-a>} {(DQ ($ Id.VSub_DollarName PUTHERE))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<grep>} {(DQ <'/'> (${ Id.VSub_Name FILE) <Id.Lit_Dollar '$'>)} {($ Id.VSub_DollarName FLIST)} ) (C {<sed>} {<-n>} {<-e>} {(SQ <1p>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [2134] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<-a>} {(DQ ($ Id.VSub_DollarName ROOT))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE) op: assign_op.Equal rhs: {(${ Id.VSub_Name ROOT) (${ Id.VSub_Name PUTHERE)} spids: [2196] ) ] redirects: [] ) ] spids: [2164 2193] ) ] else_action: [] redirects: [] ) ] spids: [2110 2131] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName DEFAULT)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHOLD='> name:PUTHOLD) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<find>} {($ Id.VSub_DollarName i)} {<-follow>} {<-name>} {($ Id.VSub_DollarName FILE)} {<-type>} {<f>} {<-print>} ) right: <Id.Backtick_Right '`'> ) } spids: [2239] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<echo>} {($ Id.VSub_DollarName PUTHOLD)}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Colon ':'>} {(SQ <'\\([^ ]*\\)'>)} ) right: <Id.Backtick_Right '`'> ) } spids: [2261] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [2293 2310] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] spids: [2209 2224] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GRP='> name:GRP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<ls>} {<-l>} {($ Id.VSub_DollarName PUTHERE)}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [2341] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWN='> name:OWN) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<ls>} {<-l>} {($ Id.VSub_DollarName PUTHERE)}) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [2361] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MOVOLD))} {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'old='> name:old) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName PUTHERE)}) (C {<sed>} {<-e>} { (DQ <'s/'> <Id.Lit_BadBackslash '\\'> <'/[^'> <Id.Lit_BadBackslash '\\'> <'/]*'> <Id.Lit_Dollar '$'> <'//'> ) } ) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [2399] ) ] redirects: [] ) (C {<mv>} {<-f>} {($ Id.VSub_DollarName PUTHERE)} {($ Id.VSub_DollarName old) <'/OLD'> ($ Id.VSub_DollarName FILE)} ) (C {<cp>} {($ Id.VSub_DollarName old) <'/OLD'> ($ Id.VSub_DollarName FILE)} {($ Id.VSub_DollarName PUTHERE)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {($ Id.VSub_DollarName ECHO)} { (DQ <'old '> ($ Id.VSub_DollarName FILE) <' moved to '> ($ Id.VSub_DollarName old) <'/OLD'> ($ Id.VSub_DollarName FILE) ) } ) ] spids: [2449 2462] ) ] else_action: [ (C {<echo>} { (DQ <'install: cp '> ($ Id.VSub_DollarName direct) <'/OLD'> ($ Id.VSub_DollarName FILE) <' '> ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <' failed'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] redirects: [] ) ] spids: [2381 2396] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FOUND='> name:FOUND) op: assign_op.Equal rhs: {<y>} spids: [2506] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<cp>} {($ Id.VSub_DollarName FILEP)} {($ Id.VSub_DollarName PUTHERE)}) ] ) action: [ (C {<chgrp>} {($ Id.VSub_DollarName GRP)} {($ Id.VSub_DollarName PUTHERE)}) (C {<chown>} {($ Id.VSub_DollarName OWN)} {($ Id.VSub_DollarName PUTHERE)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName PUTHERE)}) ] spids: [2537 2552] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName PUTHERE)}) ] spids: [2566 2581] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName UFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName PUTHERE)}) ] spids: [2594 2609] ) ] else_action: [] redirects: [] ) (C {($ Id.VSub_DollarName ECHO)} { (DQ ($ Id.VSub_DollarName FILEP) <' installed as '> ($ Id.VSub_DollarName PUTHERE) ) } ) (command.ControlFlow token:<Id.ControlFlow_Break break>) ] spids: [2510 2519] ) ] else_action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})] redirects: [] ) ] spids: [2322 2338] ) ] else_action: [] redirects: [] ) (command.Case to_match: {($ Id.VSub_DollarName FOUND)} arms: [ (case_arm pat_list: [{(DQ )}] action: [ (C {<echo>} {(DQ <'install: '> ($ Id.VSub_DollarName FILE) <' was not found anywhere!'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] spids: [2655 2657 2671 -1] ) (case_arm pat_list: [{<y>}] action: [(C {<Id.Lit_Colon ':'>})] spids: [2674 2675 2679 -1] ) (case_arm pat_list: [{<n>}] action: [ (C {<cp>} {($ Id.VSub_DollarName FILEP)} {($ Id.VSub_DollarName LASTRES) <'/'> ($ Id.VSub_DollarName FILE)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {($ Id.VSub_DollarName ECHO)} { (DQ ($ Id.VSub_DollarName FILEP) <' installed as '> ($ Id.VSub_DollarName LASTRES) <'/'> ($ Id.VSub_DollarName FILE) <' by default!'> ) } ) (C {<cd>} {($ Id.VSub_DollarName LASTRES)}) (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName FILE)}) (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName FILE)}) (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName FILE)}) ] spids: [2694 2707] ) ] else_action: [ (C {<echo>} { (DQ <'install: cp '> ($ Id.VSub_DollarName FILEP) <' '> ($ Id.VSub_DollarName LASTRES) <'/'> ($ Id.VSub_DollarName FILE) <' failed'> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] redirects: [] ) ] spids: [2682 2683 2770 -1] ) ] redirects: [] ) ] )