Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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
Ruby从系统命令获取返回(sox)_Ruby - Fatal编程技术网

Ruby从系统命令获取返回(sox)

Ruby从系统命令获取返回(sox),ruby,Ruby,我正在尝试将sox命令中的stats分配给ruby变量。使用系统时根据命令的成功与否,我得到“真/假”。所以我试过: %x{ sox file -n stats } 这在我的控制台中显示统计信息,但实际上返回一个空字符串,如下所示: Stat: 123 Another stat: 234 "" 我想获取包含统计信息的字符串。这可能吗?使用回勾: result = `sox file -n stats` 确保sox不会输出到STDERR。在这种情况下,重定向 result = `sox fi

我正在尝试将
sox
命令中的stats分配给ruby变量。使用
系统时
根据命令的成功与否,我得到“真/假”。所以我试过:

%x{ sox file -n stats }
这在我的控制台中显示统计信息,但实际上返回一个空字符串,如下所示:

Stat: 123
Another stat: 234
""
我想获取包含统计信息的字符串。这可能吗?

使用回勾:

result = `sox file -n stats`
确保sox不会输出到STDERR。在这种情况下,重定向

result = `sox file -n stats 2>&1`
编辑 反勾号和
%x{}
是相同的。很抱歉我把它和
系统混为一谈了。重定向很可能是您所需要的。

使用反向标记:

result = `sox file -n stats`
确保sox不会输出到STDERR。在这种情况下,重定向

result = `sox file -n stats 2>&1`
编辑
反勾号和
%x{}
是相同的。很抱歉我把它和
系统混为一谈了。重定向很可能是您所需要的。

因此,最终您希望在ruby var中使用
123456
%x{…}
将捕获子shell的stdout并将其作为字符串返回。如果您在控制台上看到输出,但没有在返回中得到它,那么程序很可能是在向stderr而不是stdout写入。尝试:
%x{sox file-n stats 2>&1}
将stdout和stderr都定向到stdout。因此,最终您希望在ruby var中使用
123456
%x{…}
将捕获子shell的stdout并将其作为字符串返回。如果您在控制台上看到输出,但没有在返回中得到它,那么程序很可能是在向stderr而不是stdout写入。尝试:
%x{sox文件-n stats 2>&1}
将stdout和stderr都定向到stdout。这是相同的。从:内置语法
%x{…}
使用此方法。@Stefan Right。我还以为是
系统
。还是一样的。从:内置语法
%x{…}
使用此方法。@Stefan Right。我还以为是系统的问题呢。