似乎是一个愚蠢的问题,但我很难找到答案。
我需要直接从ruby
代码执行一个非常长的命令到shell
,这个命令必须包含一个;
字符。
如果我尝试使用\;
来逃避它,则无效,如果我尝试将其替换为\%3b
,则会执行,但不会将%3b
替换为;
},所以它也不起作用。
我尝试了exec
,system
,`#{str}
`,我无法使其发挥作用。它总是分成两个我的命令。
答案 0 :(得分:1)
只要您正确引用分号,就可以在shell命令中放置分号没有问题:
system('cat file | grep ";"')
# => someline with a ; in it
system("cat #{a_variable} | grep ';'")
# => this will work as well for finding ;
我还发现Open3
模块更容易用于奇怪的系统调用/引用问题(但是它也可能有点难以运行 - 权衡):
require 'open3'
cmds = %w(grep ';' a_file)
stdout, status = Open3.capture2(*cmds)