(command.CommandList children: [ (C {<cd>} { (braced_var_sub token: <Id.VSub_Number 0> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) } ) (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: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<'../JSON.sh'>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName '$INPUT')} ) ] do_fork: T ) (C {<diff>} {<-u>} {<->} {(${ Id.VSub_Name OUTPUT_ESCAPED)}) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) 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: <Id.Lit_ArithVarLike FAILS> right: {<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: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<'../JSON.sh'>} {<-s>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName '$INPUT')} ) ] do_fork: T ) (C {<diff>} {<-u>} {<->} {(${ Id.VSub_Name OUTPUT_WITHOUT_ESCAPING)}) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) 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: <Id.Lit_ArithVarLike FAILS> right: {<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: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName '$FAILS')} ) ] )