(command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _invoke_rc_d body: (command.BraceGroup children: [ (C {<local>} {<cur>} {<prev>} {<words>} {<cword>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_init_completion>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<local>} {<sysvdir>} {<services>} {<options>} {<valid_options>}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{</etc/rc.d/init.d>}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sysvdir) op: assign_op.Equal rhs: {</etc/rc.d/init.d>} spids: [58] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sysvdir) op: assign_op.Equal rhs: {</etc/init.d>} spids: [65] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:services) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<printf>} {(SQ <'%s '>)} {($ Id.VSub_DollarName '$sysvdir') </> (word_part.ExtGlob op: <Id.ExtGlob_Bang '!('> arms: [ {<README> <Id.Lit_Other '*'>} {<Id.Lit_Other '*'> <.sh>} {($ Id.VSub_DollarName '$_backup_glob')} ] ) } ) ] ) ) } ] ) } spids: [70] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:services) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (braced_var_sub token: <Id.VSub_Name services> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {($ Id.VSub_DollarName '$sysvdir') <Id.Lit_Slash />} ) ) } ] ) } spids: [98] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:options) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {<--help>} {<--quiet>} {<--force>} {<--try-anyway>} {<--disclose-deny>} {<--query>} {<--no-fallback>} ] ) } spids: [114] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$cword')} right: {<1>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$prev'))} right: {<--> <Id.Lit_Other '*'>} ) ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:valid_options) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [ {<tr>} {(DQ <' '>)} {(DQ <Id.Lit_Other '\\'> <n>)} ] redirects: [ (redir.Redir op: <Id.Redir_TLess '<<<'> fd: -1 arg_word: { (DQ (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) <' '> (braced_var_sub token:<Id.VSub_Name options> bracket_op:(bracket_op.WholeArray op_id:Id.Lit_At)) ) } ) ] ) (C {<sed>} {<-ne>} { (DQ </> (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Simple words: [ {<sed>} { (DQ <'s/ /'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'|/g'> ) } ] redirects: [ (redir.Redir op: <Id.Redir_TLess '<<<'> fd: -1 arg_word: { (DQ (braced_var_sub token: <Id.VSub_Name options> bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) ) } ) ] ) ] ) ) </p> ) } ) (C {<sort>}) (C {<uniq>} {<-u>}) ] negated: F ) ] ) ) } ] ) } spids: [169] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<compgen>} {<-W>} {(SQ <'${valid_options[@]} ${services[@]}'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [258] ) ] ) ] spids: [137 166] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_x child: {($ Id.VSub_DollarName '$sysvdir') </> ($ Id.VSub_DollarName '$prev')} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<compgen>} {<-W>} { (SQ <'`sed -e "y/|/ /" \\\n'> < ' -ne "s/^.*Usage:[ ]*[^ ]*[ ]*{*\\([^}\\"]*\\).*$/\\1/p" \\\n' > <' $sysvdir/$prev`'> ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [298] ) ] ) ] spids: [282 295] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [327] ) ] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (C {<complete>} {<-F>} {<_invoke_rc_d>} {<invoke-rc.d>}) ] )