我正在尝试运行一个命令并将它的输出保存到一个变量中(这样我以后可以解析它并从输出中提取信息)。我知道如何将它保存到一个变量中,但我希望它显示即将到来的输出,不仅在最后,所以我可以看到正在执行的输出。或者更好的是,能够显示它,并使用该信息过滤/执行其他命令。
我以为我可以以某种方式将命令导入read
,但无法使其正常工作。
这是我一直在使用的示例代码:
#!/bin/bash
count=0
function theloop() {
while [ $count -lt 10 ]; do
echo "the count is $count"
sleep 1
let count=count+1
done
}
output=$(theloop)
echo "the output was:"
echo "$output"
这会输出计数,但仅在最后更新,而不是每秒写入一行。
有人可以告诉我如何将循环输入read
或其他解决方案。即使只是将它保存到一个我可以稍后解析的变量中也会很好,只要屏幕在生成计数时每秒更新一次。
我想我可以以某种方式使用tee
到一个临时文件中,然后阅读它,但这对我来说似乎是一个不雅的解决方案。
编辑:我应该提到我计划在另一个我不够聪明无法编辑的程序的输出上使用它,所以我宁愿回答不改变theloop()
功能的答案。