(command.CommandList children: [ (C {(cd)} { (braced_var_sub token: (Token id:Id.VSub_Number val:0 span_id:7) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{(Id.Lit_Slash /) ('*')}) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INPUT) op: assign_op.Equal rhs: {(./solidus/string_with_solidus.json)} spids: [14] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OUTPUT_ESCAPED) op: assign_op.Equal rhs: {(./solidus/string_with_solidus.with-escaping.parsed)} spids: [17] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OUTPUT_WITHOUT_ESCAPING) op: assign_op.Equal rhs: {(./solidus/string_with_solidus.no-escaping.parsed)} spids: [20] ) ] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:FAILS) op:assign_op.Equal rhs:{(0)} spids:[24])] ) (C {(echo)} {(DQ (1..2))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{(../JSON.sh)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:41) fd: -1 arg_word: {($ Id.VSub_DollarName '$INPUT')} ) ] ) (C {(diff)} {(-u)} {(-)} {(${ Id.VSub_Name OUTPUT_ESCAPED)}) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:55) ) ] action: [ (C {(echo)} {(DQ ('not ok - JSON.sh run without -s option should leave solidus escaping intact'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FAILS) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.VarRef token: (Token id:Id.Lit_ArithVarLike val:FAILS span_id:69) ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [67] ) ] ) ] spids: [35 57] ) ] else_action: [ (C {(echo)} {(DQ ('ok ') ($ Id.VSub_DollarName '$i') (' - solidus escaping was left intact'))}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{(../JSON.sh)} {(-s)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:99) fd: -1 arg_word: {($ Id.VSub_DollarName '$INPUT')} ) ] ) (C {(diff)} {(-u)} {(-)} {(${ Id.VSub_Name OUTPUT_WITHOUT_ESCAPING)}) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:113) ) ] action: [ (C {(echo)} {(DQ ('not ok - JSON.sh run with -s option should remove solidus escaping'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FAILS) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.VarRef token: (Token id:Id.Lit_ArithVarLike val:FAILS span_id:127) ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [125] ) ] ) ] spids: [91 115] ) ] else_action: [ (C {(echo)} {(DQ ('ok ') ($ Id.VSub_DollarName '$i') (' - solidus escaping has been removed'))}) ] ) (C {(echo)} {(DQ ($ Id.VSub_DollarName '$FAILS') (' test(s) failed'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:154) arg_word: {($ Id.VSub_DollarName '$FAILS')} ) ] )