Ruby执行Shell命令并获取数组

4

我从shell中获取了几行字符串。是否有可能得到一个Array,其中每行都是其元素?

2个回答

9

当然,根据输出结果,你可以简单地进行分割。例如:

lines = `ls`.split

这个解决方案与你使用的程序执行方法无关。只要你得到完整的字符串,就可以使用 split 来分割它。

6
原问题是如何按行拆分,而split函数默认情况下会按照空格进行拆分。虽然这可能足够了,但您可能想传递一个正则表达式,例如:
`ls -l`.split(/$/)

该函数将每行分别返回到数组的单独元素中。然而,它并没有去掉最初的回车符或换行符。为此,您需要使用map函数遍历数组,并对每个元素应用strip函数,例如:

`ls -l`.split(/$/).map(&:strip)

你的方法不如直接使用“split”好。我用 sudo ifquery --list | grep -v lo 进行测试。你的返回值是 ["eth0", "eth1", ""],最后一个很烦人。 - user180574
但是如果您的输出中有 '\n'(例如作为名称的一部分),则 split 不起作用。 - Ana María Martínez Gómez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接