(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expected) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(DQ <EOF>)} here_end_span_id: 15 stdin_parts: [ < '("#!/usr/bin/env bash" " echo \\"bash >= 4.0 required\\" >&2" "#!/bin/bash" " \\"how do we replace bash?\\")" " (title \\"gherkin - a lisp1 written in bash4\\")" " \\" - no real array in bash\\"" " \\"Aron Griffis: bash pro tips\\"")\n' > ] ) ) ] do_fork: T ) ) } spids: [3] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:actual) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<'./gherkin'>} {<-e>} { (SQ < '(load-file "core") (sh (str "grep -h bash " (join " " (remove (fn [x] (or (eq? "simple_test.sh" x) (eq? "README.md" x))) (sh "ls")))))' > ) } ) ) } spids: [19] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$expected'))} right: {(DQ ($ Id.VSub_DollarName '$actual'))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(DQ <'test 1/1 passed'>)})] spids: [31 48] ) ] else_action: [ (C {<echo>} {(DQ <'test 1/1 failed'>)}) (C {<echo>} {(DQ <'EXPECTED: '> ($ Id.VSub_DollarName '$expected'))}) (C {<echo>} {(DQ <'RECEIVED: '> ($ Id.VSub_DollarName '$actual'))}) ] ) ] )