首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby1.8的Shellwords.shellescape实现

Ruby1.8的Shellwords.shellescape实现
EN

Stack Overflow用户
提问于 2009-08-20 14:45:24
回答 2查看 4.6K关注 0票数 5

虽然我的1.8.7版本似乎有一个Shellwords::shellescape的后端口版本,但我知道该方法是1.9的特性,在1.8的早期版本中肯定不支持。有谁知道我在哪里可以找到一个健壮的独立的Ruby转义的Bourne-shell命令实现,无论是Gem形式的还是一个代码片段?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-24 14:02:52

我最终选择了Escape gem,它有一个额外的特性,默认情况下使用引号,只有在必要时才使用反斜杠转义。

票数 5
EN

Stack Overflow用户

发布于 2009-08-24 00:47:53

你也可以把你想要的东西复制到shellwords.rb的subversion仓库(即GPLv2‘d)中:

代码语言:javascript
复制
  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
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1306680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档