(command.CommandList children: [ (C {<.>} {<'../1/library.sh'>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<3>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number '$0') <' principal interest loan-duration-years'>)} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [31 45] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:P) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [67] ) (assign_pair lhs: (sh_lhs_expr.Name name:I) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [70] ) (assign_pair lhs: (sh_lhs_expr.Name name:L) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [73] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:J) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<scriptbc>} {<-p>} {<8>} {($ Id.VSub_DollarName '$I')} {<'/'>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} {<12>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)} {<100>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} ) ) ) } spids: [76] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:N) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName '$L')} right: {<Id.Lit_Digits 12>} ) ) ) } spids: [102] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:M) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<scriptbc>} {<-p>} {<8>} {($ Id.VSub_DollarName '$P')} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} {($ Id.VSub_DollarName '$J')} {<'/'>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>) <1>} {<->} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>) <1>} {<Id.Lit_Other '+'>} {($ Id.VSub_DollarName '$J') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\)'> ) } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\^'>)} {<-> ($ Id.VSub_DollarName '$N') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\)'> ) } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} ) ) ) } spids: [116] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dollars) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<echo>} {($ Id.VSub_DollarName '$M')}) (C {<cut>} {<-d.>} {<-f1>})] negated: F ) ) ) } spids: [164] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cents) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$M')}) (C {<cut>} {<-d.>} {<-f2>}) (C {<cut>} {<-c1-2>}) ] negated: F ) ) ) } spids: [181] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 235 stdin_parts: [ <'A '> ($ Id.VSub_DollarName '$L') <'-year loan at '> ($ Id.VSub_DollarName '$I') <'% interest with a principal amount of '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<nicenumber>} {($ Id.VSub_DollarName '$P')} {<1>}) ) <' \n'> <'results in a payment of '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) ($ Id.VSub_DollarName '$dollars') <.> ($ Id.VSub_DollarName '$cents') <' each month for the duration of\n'> <'the loan ('> ($ Id.VSub_DollarName '$N') <' payments).\n'> ] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )