Pregunta

Mientras que la acumulación de 1.8.7 Tengo parece tener una versión portado de Shellwords::shellescape, sé que el método es una característica 1,9 y definitivamente no es compatible con versiones anteriores de 1,8. ¿Alguien sabe donde puedo encontrar, ya sea en forma de joya o simplemente como un fragmento, una aplicación independiente robusta de comandos Bourne shell-escape para Ruby?

¿Fue útil?

Solución 2

terminé yendo con la escape gema, que tiene la característica adicional del uso de cotizaciones de forma predeterminada y sólo barra invertida-escapar cuando sea necesario.

Otros consejos

Es posible que también acaba de copiar lo que quiere de href="http://svn.ruby-lang.org/repos/ruby/trunk/lib/shellwords.rb". rb en el maletero de repositorio de subversión de Ruby (que es GPLv2 'd):

  def shellescape(str)
    # An empty argument will be skipped, so return empty quotes.
    return "''" if str.empty?

    str = str.dup

    # Process as a single byte sequence because not all shell
    # implementations are multibyte aware.
    str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/n, "\\\\\\1")

    # A LF cannot be escaped with a backslash because a backslash + LF
    # combo is regarded as line continuation and simply ignored.
    str.gsub!(/\n/, "'\n'")

    return str
  end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top