假设我在一个变量中有一堆文本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")
...但是任何特殊字符都会搞砸,我无法删除特殊字符。我该怎么办?