加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 01:46:31 所属栏目:百科 来源:网络整理
导读:假设我在变量some??_var中有一堆文本,几乎可以是任何东西. some_var = "Hello,I'm a "fancy" variable | with a pipe,double- and single-quotes (terminated and unterminated),and more." 我们还要说,在CLI Ruby应用程序中,我想允许用户将该文本传递给任
假设我在变量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("foonbarnbazn") # you can also use #write
  f.close_write
  f.read # get the data from the pipe
}
# => "barnbazn"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读