(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: (Token id:Id.ControlFlow_Return val:return span_id:32) ) ] ) (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: (Token id:Id.Op_LParen val:'(' span_id:71) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:73) command_list: (command.CommandList children: [ (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s ' span_id:78))} {($ Id.VSub_DollarName '$sysvdir') (/) (word_part.ExtGlob op: (Token id:Id.ExtGlob_Bang val:'!(' span_id:83) 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: (Token id:Id.Op_LParen val:'(' span_id:99) words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:services span_id:102) 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: (Token id:Id.Op_LParen val:'(' span_id:115) 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: (Token id:Id.Op_Semi val:';' span_id:164) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:valid_options) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:170) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:172) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [ {(tr)} {(DQ (' '))} {(DQ (Id.Lit_Other '\\') (n))} ] redirects: [ (redir.Redir op: (Token id: Id.Redir_TLess val: '<<<' span_id: 187 ) fd: -1 arg_word: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: words span_id: 190 ) bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) (' ') (braced_var_sub token: (Token id: Id.VSub_Name val: options span_id: 197 ) bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) ) } ) ] ) (C {(sed)} {(-ne)} { (DQ (/) (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 214 ) command_list: (command.CommandList children: [ (command.Simple words: [ {(sed)} { (DQ ('s/ /') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\\\' span_id: 220 ) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:221)) ('|/g') ) } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_TLess val: '<<<' span_id: 225 ) fd: -1 arg_word: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: options span_id: 228 ) 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: (Token id:Id.Op_LParen val:'(' span_id:259) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:261) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '${valid_options[@]} ${services[@]}' span_id: 268 ) ) } {(--)} {(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: (Token id:Id.Op_Semi val:';' span_id:293) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:299) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:301) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '`sed -e "y/|/ /" \\\n' span_id: 308 ) (Token id: Id.Lit_Chars val: ' -ne "s/^.*Usage:[ ]*[^ ]*[ ]*{*\\([^}\\"]*\\).*$/\\1/p" \\\n' span_id: 309 ) (Token id:Id.Lit_Chars val:' $sysvdir/$prev`' span_id:310) ) } {(--)} {(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:(Token id:Id.Op_LParen val:'(' span_id:328))} spids: [327] ) ] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:336) arg_word: {(0)} ) ] ) ) (C {(complete)} {(-F)} {(_invoke_rc_d)} {(invoke-rc.d)}) ] )