Project

General

Profile

Actions

Bug #17126

closed

String#gsub fails to escape single quote for shell

Added by AndyMaleh (Andy Maleh) over 4 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:99643]

Description

Hi, I don't know if I'm misunderstanding how String#gsub works, but I encountered an issue in the Ruby "git" gem with escaping single quotes for shell, which I fixed and contributed back.

I thought I'd report here too since it was caused by Ruby String#gsub malfunctioning, just in case there is a bug in Ruby.

Description:

When calling String#gsub("'", "'\\''") on a String that contains a single-quote (e.g. "Hello ' World"), it is duplicating the substring following the single-quote in the returned String instead of simply replacing the single-quote with escaped single quotes.

Code to Demonstrate Problem:

"Hello ' World".gsub('\'', '\'\\\'\'')

or

"Hello ' World".gsub("'", "'\\''")

or

"Hello ' World".gsub(/'/, "'\\''")

Output:

 => "Hello ' World' World"

Expected Output:

 => "Hello '\'' World"

In fact, I tested this same regex replacement in Java and got the expected output above.

I look forward to hearing back about this puzzling problem.

Perhaps it is not a bug and I am just misunderstanding how String#gsub works in Ruby as I noticed it behaves the same exact way in JRuby too.

Best regards,

Andy Maleh

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0