【发布时间】:2015-05-22 12:04:37
【问题描述】:
我需要帮助我运行这样的 bash 脚本:
do_something > file.txt(我在另一个 echo 输出中使用了这个 file.txt 的第三行)
现在我需要在 file.txt 的第二行获取一些字符。 (只有点 - “.”)
我可以用这个命令获取字符数:
progress=$(awk 'NR==2' file.txt | grep -o \. | wc -w)
但问题是,file.txt 和第二行的字符数是“进度条”,因此它会从 0 到 XY(即 100)个字符随时间变化。
我想用它来查看百分比进度:echo -ne "$progress % \\r"
我怎么能在一个循环中做到这一点? do_something > file.txt 必须只启动一次。在接下来的约 5-20 秒内,它会在第二行打印点,我必须将此数字每秒更新一次以输出回显“XY %”。
如何每秒读取 file.txt 并找到“新/更新”的字符数?* edit
编辑: *这是实时过程。我的 do_something > file.txt 正在向该文件“打印”点,我希望打印结果实时保存在 $progress 中。所以第一个命令是将点打印到文件中,我每秒实时计算它们并打印从 0-100 % 完成了多少百分比
【问题讨论】:
-
您想什么时候停止打印?
-
当 file.txt 的第二行达到 100 个字符时我会停止打印。
-
查看我的更新答案 (stackoverflow.com/a/30396366/4408382),让我知道它是否适合您。
标签: bash shell command-line-interface