(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:voptions) op: assign_op.Equal rhs: {(DQ )} spids: [100] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:options) op: assign_op.Equal rhs: {(DQ )} spids: [104] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:files) op: assign_op.Equal rhs: {(DQ )} spids: [108] ) ] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:f) op:assign_op.Equal rhs:{(DQ )} spids:[112])] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head) op: assign_op.Equal rhs: {(DQ )} spids: [116] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:vf) op: assign_op.Equal rhs: {(DQ </usr/libexec/vfontedpr>)} spids: [120] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tm) op: assign_op.Equal rhs: {(DQ </usr/share/tmac>)} spids: [125] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:postproc) op: assign_op.Equal rhs: {(DQ <psroff>)} spids: [130] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_Number '$1')} arms: [ (case_arm pat_list: [{<-f>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:f) op: assign_op.Equal rhs: {(DQ <filter>)} spids: [164] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:options) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$options') <' -f'>)} spids: [170] ) ] ) ] spids: [160 161 177 -1] ) (case_arm pat_list: [{<-t>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:voptions) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$voptions') <' -t'>)} spids: [184] ) ] ) ] spids: [180 181 191 -1] ) (case_arm pat_list: [{<-o> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:voptions) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$voptions') <' '> ($ Id.VSub_Number '$1'))} spids: [199] ) ] ) ] spids: [194 196 207 -1] ) (case_arm pat_list: [{<-W>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:voptions) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$voptions') <' -W'>)} spids: [214] ) ] ) ] spids: [210 211 221 -1] ) (case_arm pat_list: [{<-d>}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_Number '$0') <': option '> ($ Id.VSub_Number '$1') <' must have argument'> ) } ] redirects: [ (redir.Redir op: <Id.Redir_GreatAnd '>&'> fd: -1 arg_word: {<2>} ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [228 239] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:options) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$options') <' '> ($ Id.VSub_Number '$1') <' '> ($ Id.VSub_Number '$2') ) } spids: [263] ) ] ) (C {<shift>}) ] spids: [224 225 276 -1] ) (case_arm pat_list: [{<-h>}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_Number '$0') <': option '> ($ Id.VSub_Number '$1') <' must have argument'> ) } ] redirects: [ (redir.Redir op: <Id.Redir_GreatAnd '>&'> fd: -1 arg_word: {<2>} ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [283 294] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [318] ) ] ) (C {<shift>}) ] spids: [279 280 327 -1] ) (case_arm pat_list: [{<-p>}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_Number '$0') <': option '> ($ Id.VSub_Number '$1') <' must have argument'> ) } ] redirects: [ (redir.Redir op: <Id.Redir_GreatAnd '>&'> fd: -1 arg_word: {<2>} ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [334 345] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:postproc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [369] ) ] ) (C {<shift>}) ] spids: [330 331 378 -1] ) (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:options) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$options') <' '> ($ Id.VSub_Number '$1'))} spids: [386] ) ] ) ] spids: [381 383 394 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:files) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$files') <' '> ($ Id.VSub_Number '$1'))} spids: [401] ) ] ) ] spids: [397 398 409 -1] ) ] ) (C {<shift>}) ] ) ) (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {<test>} {<-r>} {<index>}) terminator:<Id.Op_Semi _>)] action: [ (command.Simple words: [{<echo>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<nindex>})] ) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_DollarName '$files')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Pipeline children: [ (C {<echo>} {(DQ <'? '> ($ Id.VSub_DollarName '$i') <' ?d'>)}) (command.Simple words: [ {<sed>} {<-e>} { (DQ <'s:/:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'/:g'> ) } {<-e>} {(DQ <'s:?:/:g'>)} ] redirects: [(redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{<nindex>})] ) ] negated: F ) ] ) ) (command.Simple words: [{<sed>} {<-f>} {<nindex>} {<index>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<xindex>})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$f'))} {<Id.Lit_Equals '='>} {<xfilter>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Pipeline children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$head'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>} ) terminator: <Id.Op_Semi _> ) ] action: [ (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {<-h>} {(DQ ($ Id.VSub_DollarName '$head'))} {($ Id.VSub_DollarName '$files')} ) ] spids: [523 538] ) ] else_action: [ (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {($ Id.VSub_DollarName '$files')} ) ] ) (C {<cat>} {($ Id.VSub_DollarName '$tm') </tmac.vgrind>} {<->}) ] negated: F ) ] spids: [506 520] ) ] else_action: [ (command.Pipeline children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$head'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>} ) terminator: <Id.Op_Semi _> ) ] action: [ (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {<-h>} {(DQ ($ Id.VSub_DollarName '$head'))} {($ Id.VSub_DollarName '$files')} ) ] spids: [579 594] ) ] else_action: [ (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {($ Id.VSub_DollarName '$files')} ) ] ) (C {<sh>} {<-c>} { (DQ ($ Id.VSub_DollarName '$postproc') <' -rx1 '> ($ Id.VSub_DollarName '$voptions') <' -i -mvgrind 2>> xindex'> ) } ) ] negated: F ) ] ) (command.Simple words: [{<sort>} {<-df>} {<-k>} {<1> <Id.Lit_Comma ','> <2>} {<xindex>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<index>})] ) (C {<rm>} {<nindex>} {<xindex>}) ] spids: [420 429] ) ] else_action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$f'))} {<Id.Lit_Equals '='>} {<xfilter>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Pipeline children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$head'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>} ) terminator: <Id.Op_Semi _> ) ] action: [ (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {<-h>} {(DQ ($ Id.VSub_DollarName '$head'))} {($ Id.VSub_DollarName '$files')} ) ] spids: [682 697] ) ] else_action: [ (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {($ Id.VSub_DollarName '$files')} ) ] ) (C {<cat>} {($ Id.VSub_DollarName '$tm') </tmac.vgrind>} {<->}) ] negated: F ) ] spids: [665 679] ) ] else_action: [ (command.Pipeline children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$head'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>} ) terminator: <Id.Op_Semi _> ) ] action: [ (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {<-h>} {(DQ ($ Id.VSub_DollarName '$head'))} {($ Id.VSub_DollarName '$files')} ) ] spids: [738 753] ) ] else_action: [ (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {($ Id.VSub_DollarName '$files')} ) ] ) (C {($ Id.VSub_DollarName '$postproc')} {<-i>} {($ Id.VSub_DollarName '$voptions')} {<-mvgrind>} ) ] negated: F ) ] ) ] ) ] )