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。我还以为是系统的问题呢。