Question

Alors que la construction de 1.8.7 je semble avoir une version rétroportés de Shellwords::shellescape, je sais que la méthode est une caractéristique 1.9 et est certainement pas pris en charge dans les versions antérieures de 1,8. Est-ce que quelqu'un sait où je peux trouver, que ce soit sous forme Gem ou tout simplement comme un extrait, une implémentation autonome robuste de commande Bourne-shell pour échapper Ruby?

Était-ce utile?

La solution 2

Je liquidée aller avec le échapper joyau, qui a la caractéristique supplémentaire de l'utilisation des guillemets par défaut et seulement-escaping backslash si nécessaire.

Autres conseils

Vous pourriez tout aussi bien copier ce que vous voulez . rb dans le coffre de dépôt subversion Ruby (qui est 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top