Bug #8028

Shellwords.escape works incorrect under windows

Added by Shagabutdinov (Leonid Shagabutdinov) over 7 years ago. Updated over 1 year ago.

Target version:
ruby -v:
ruby 2.0.0p0 (2013-02-24) [i386-mingw32]


Shellwords.escape works incorrect under windows (tested for Windows 7
x64), here is example:

Actual result:

irb(main):001:0> require 'shellwords'
=> true

irb(main):002:0> `echo #{Shellwords.escape( '123>' )} test` # should
echo "123> test", but echo nothing
=> ""

irb(main):003:0> 'test' ) # but writes file "test"
=> "123\\\n"

Expected result:

irb(main):001:0> `echo 132^> test` # the correct escape sequence, echoed
"123> test"
=> "132> test\n"

Tested for "ruby 2.0.0p0 (2013-02-24) [i386-mingw32]", ruby 1.9.3, but this bug can be found in earlier ruby versions as well.

Updated by jsc (Justin Collins) over 1 year ago

Shagabutdinov (Leonid Shagabutdinov) wrote:

Shellwords.escape works incorrect under windows (tested for Windows 7

I don't believe Shellwords is intended to work on Windows at all. According to the comments (

# == Manipulates strings like the UNIX Bourne shell
# This module manipulates strings according to the word parsing rules
# of the UNIX Bourne shell.

Updated by nobu (Nobuyoshi Nakada) over 1 year ago

  • Status changed from Open to Rejected
  • Description updated (diff)

Escaping ways are various across shells, not only Windows.
Use system with an array, e.g., system('echo', '123>').

Also available in: Atom PDF