微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将变量传递给ruby中的system()调用?

假设我在变量some​​_var中有一堆文本,几乎可以是任何东西.

some_var = "Hello,I'm a \"fancy\" variable | with a pipe,double- and single-quotes (terminated and unterminated),and more."

我们还要说,在CLI Ruby应用程序中,我想允许用户将该文本传递给任何Unix命令.我允许他们输入像some_var一样的东西espeak -a 200 -v en-us,其中管道右侧的命令是安装在其系统上的任何unix CLI工具.

我们还要说我已经将变量选择和管道分离出来了,所以我确切地知道管道后面的命令是100%. (在这种情况下,我想将变量的内容传递给espeak -a 200 -v en-us.)

我该怎么做?我认为我不能使用反引号方法或%x []文字.我试过做以下事情……

system("echo '#{some_var}' | espeak -a 200 -v en-us")

…但是任何特殊字符搞砸了,我无法删除特殊字符.我该怎么办?

解决方法

哦,快乐的注射.您正在寻找
IO.popen.

IO.popen('grep ba','r+') {|f| # don't forget 'r+'
  f.puts("foo\nbar\nbaz\n") # you can also use #write
  f.close_write
  f.read # get the data from the pipe
}
# => "bar\nbaz\n"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐