Linux Bash脚本 – 在执行其他任务时要在控制台上运行秒表

我一直拉着这头发。 我是bash脚本编写和Linux大学课程的新手。 这不是任何任务的要求,而只是个人发展。

我正在尝试在控制台上运行秒表(显示秒数),同时获取用户input信息并执行其他操作。

我已经研究了这个问题好几个小时了。 我想我只是用错误的查询来search。

我创造了一个hang子手游戏(你可以在挂人之前猜词的字母)。

这是一个很好的学习经验。 现在我想用时钟来表示已经过了多less时间。

任何意见或相关教程的链接将不胜感激。

我的testing代码到目前为止不起作用,但只是为定时器做一个无限循环。

#!/bin/bash # timer.sh timer () { while true do tput cup 0 0 echo $SECONDS wait 1 done } display () { tput cup 5 0 echo -n "This is output from other stuff" read -n1 letter #while read -n1 letter #do tput cup 7 0 echo -n "type any letter" tput cup 9 0 echo -n "You letter is: $letter" if [[ "$letter" == "x" ]] then exit fi #done } finished () { tput clear echo -n "This is the end of the program" kill $timer_pid exit } # Main Body trap finished SIGINT SIGTERM tput clear while true do timer & timer_pid=$! display done exit 

尝试改变wait 1 sleep 1

由于您对shell脚本很熟悉,所以我提供了一个基本的逻辑。 而且,越是你的代码/阅读文档越多你学习,所以不提供执行。

 Seconds=1 while true do PrintWatch Seconds ## tput is an excellent option Seconds+=1 Input=GetInputFromUserBlockFor_N_Seconds ## help read if Input == Stop then break fi done 
 #!/bin/bash # # display time at line begin. # tick () { t=$(date +%T) echo -en "\r$t > " sleep 10 tick } tick 

如果你把它当作一个带有./tick.sh &的脚本来./tick.sh & ,它会一直在行的开始处打印这个时间,但这会干扰你自己的输入。

您可以将时间集成到提示符中(请参阅man:bash / PROMPTING),但这不会实现时间,只需显示插入每个命令后的新时间即可。