显示终端中更新信息的Bash脚本

显示终端中更新信息的Bash脚本,bash,Bash,我正试图编写一个bash脚本来显示python脚本的输出。我希望输出每秒刷新一次,因此我的脚本如下(run.sh): 但是,当python脚本工作时,屏幕会闪烁(其中涉及一些web访问)。我怎样才能使它更复杂,并等待脚本完成后再清除我以前拥有的内容 提前谢谢 快速方法是建立一个临时文件: tmpf=`mktemp` while [ condition ] do python ${SCRIPT} > $tmpf clear cat $tmpf sleep ${INTER

我正试图编写一个bash脚本来显示python脚本的输出。我希望输出每秒刷新一次,因此我的脚本如下(
run.sh
):

但是,当python脚本工作时,屏幕会闪烁(其中涉及一些web访问)。我怎样才能使它更复杂,并等待脚本完成后再清除我以前拥有的内容


提前谢谢

快速方法是建立一个临时文件:

tmpf=`mktemp`

while [ condition ]
  do
  python ${SCRIPT} > $tmpf
  clear
  cat $tmpf
  sleep ${INTERVAL}
  done

rm $tmpf
不过,这需要您在退出时进行一些清理。除此之外,我建议将整个循环移到python中,因为真的,为什么不呢?您可以使用子流程派生出另一个shell,甚至可以得到一个更通用的程序

补充:
您可以使用内置的陷阱('s a article on),在终止脚本时自动进行清理

这是一个丑陋的黑客,但不使用临时文件或fifo:

a=$(clear; python ${SCRIPT})
echo $a

但说真的:最好的方法是在脚本中加入屏幕清除。给它一个开关
-清除
或类似的东西。

使用手表。它只会在整个脚本完成后更新屏幕,它会处理诸如清除屏幕和处理比单个屏幕大的输出之类的事情

watch-n${INTERVAL}'python${SCRIPT}'

如果要查看watch如何处理长期运行任务的示例,请执行以下操作:

watch'日期;回声;回声长时间运行的任务。。。;睡眠3;回声;日期“

a=$(clear; python ${SCRIPT})
echo $a