好吧,这让我发疯:
`ls #{"/media/music/Miles Davis"}`
由于“Miles”和“Davis”之间有空格而失败
假设我编写了一个 ruby 脚本,并且用户将文件路径作为参数传递。我如何转义它并提供给 shell-out 命令。是的,是的,我知道,应该避免花钱。但这是一个人为的例子,我仍然需要这个。
我会做system("ls", ARGV[0])
,但它不会将 ls 的 stdout 输出作为字符串返回,而这正是反引号的优势所在。
如何转义在 shellout 中插入的任何内容?
Use require 'shellwords'
and Shellwords.escape
,这将为您解决此类问题:
http://apidock.com/ruby/Shellwords/shellescape http://apidock.com/ruby/Shellwords/shellescape
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)