shell 精灵语中如何处理来自外部进程的行?

bhmjp9jg  于 2023-02-24  发布在  Shell
关注(0)|答案(1)|浏览(124)

原始问题:我想从某个过程产生的(字符串)行中提取信息。可以通过一行一行地处理来完成。提取的数据应该保存在几个集合中(列表?Map?无论什么...)
要处理的行是特定的,可以忽略这些行,直到找到某个特定的行。应保存以下所有行,然后再进行处理。
我使用elvish的问题是,我不知道如何将生成的输出行转换为字符串列表。
我试过:

var lines = (my_app) | from-lines`

但是elvish说,右边有很多值,左边只有一个(它不能从那些值中列出一个列表)。
我的另一个方法是:

var data = []
my_app | each {|line|
  ...
  set data = conj $data $line
}

但它也不起作用(不过我不记得错误消息了)。另外,(conj $data $line)也不起作用:elvish将其视为无法找到的外部命令。

cpjpxq1n

cpjpxq1n1#

非常简单的输出捕获为我工作:

~> cat t.txt
a
b

~> var linelist = [( cat t.txt )]

~> put $linelist[1]
▶ b

相关问题