Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何清理shell命令并在Ruby中获得输出?_Ruby_Shell_Sanitize - Fatal编程技术网

如何清理shell命令并在Ruby中获得输出?

如何清理shell命令并在Ruby中获得输出?,ruby,shell,sanitize,Ruby,Shell,Sanitize,我必须在用户提供输入的地方运行一些shell命令。我找到了一种似乎安全的方法:system*%W(ls#{file}) 我需要得到该命令的输出,所以我不能只使用system。有没有办法清理backticks`或%x[]的命令?您运行的是哪种Ruby不支持的shell命令?如果您正在列出文件,请使用所需的而不是系统。您仍然可以在不使用shell的情况下传递字符串数组来调用命令,并且可以从生成的IO对象中读取 如果你也想读stderr,那么就用模块代替IO。我使用ls只是作为示例,我想混合使用自编程

我必须在用户提供输入的地方运行一些shell命令。我找到了一种似乎安全的方法:
system*%W(ls#{file})


我需要得到该命令的输出,所以我不能只使用
system
。有没有办法清理backticks
`
%x[]
的命令?

您运行的是哪种Ruby不支持的shell命令?如果您正在列出文件,请使用所需的而不是
系统
。您仍然可以在不使用shell的情况下传递字符串数组来调用命令,并且可以从生成的IO对象中读取


如果你也想读stderr,那么就用模块代替IO。

我使用ls只是作为示例,我想混合使用自编程序和unix程序,我使用的是ruby File、Dir和FileUtils类:PIO::popen(*%W[ls-al])。read给了我“ArgumentError:非法访问模式-al”:(但是如果没有'-al',它可以工作…@klump,删除
*
,这样popen的第一个参数就是一个数组。请注意,使用数组调用
popen
只在1.9中有效。在ruby 1.8中,您需要使用popen3或backticks+
外壳词。escape
@sepp2k:后端口是否涵盖了这一点?