Pergunta

Enquanto a construção de 1.8.7 Tenho parece ter uma versão backported de Shellwords::shellescape, eu sei que o método é uma característica 1,9 e definitivamente não é suportado em versões anteriores do 1.8. Alguém sabe onde eu posso encontrar, quer em forma Gem ou apenas como um trecho, uma implementação standalone robusta de comando Bourne-shell escapar para Ruby?

Foi útil?

Solução 2

acabei indo com o Fuga gem, que tem a característica adicional de usar citações por padrão e só barra invertida-escapar quando necessário.

Outras dicas

Você pode muito bem copiar o que você quer de shellwords. rb no tronco de repositório Subversion de ruby ??(que é 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top