(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'nm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nm='> name:nm) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$nm'> more_env: [] words: [{($ Id.VSub_DollarName nm)} {(DQ ($ Id.VSub_DollarName file))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(SQ <'^ *U'>)}] redirects: [ (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>}) (Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})] spids: [34 47] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName file) <': undefined symbols found'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] )