Linux Bash脚本-希望在执行其他任务时在控制台上运行秒表

Linux Bash脚本-希望在执行其他任务时在控制台上运行秒表,linux,bash,Linux,Bash,这件事我一直很紧张。我对bash脚本编写和Linux大学课程还不熟悉。这不是任何任务的要求,只是个人发展 我正在尝试在控制台上运行秒表(显示计时时间),同时获取用户输入和执行其他操作 我已经研究这个问题好几个小时了。我想我只是在用错误的查询进行搜索 我创造了一个刽子手游戏(在这个游戏中,你在绞死盖伊之前猜单词的字母) 那是一次很好的学习经历。现在我想要一个时钟来显示已经过去了多少时间 如有任何建议或相关教程的链接,将不胜感激 到目前为止,我的测试代码不起作用,只是对计时器进行了无限循环 #!/b

这件事我一直很紧张。我对bash脚本编写和Linux大学课程还不熟悉。这不是任何任务的要求,只是个人发展

我正在尝试在控制台上运行秒表(显示计时时间),同时获取用户输入和执行其他操作

我已经研究这个问题好几个小时了。我想我只是在用错误的查询进行搜索

我创造了一个刽子手游戏(在这个游戏中,你在绞死盖伊之前猜单词的字母)

那是一次很好的学习经历。现在我想要一个时钟来显示已经过去了多少时间

如有任何建议或相关教程的链接,将不胜感激

到目前为止,我的测试代码不起作用,只是对计时器进行了无限循环

#!/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

由于您对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
如果使用
/tick.sh&
将其作为脚本调用,它将始终打印行首的时间,但会干扰您自己的输入


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

尝试将
wait 1
更改为
sleep 1

最近在S.O.上至少有两次询问bash秒表;尝试搜索它们。祝你好运。嘿,谢勒,正如我在帖子中提到的,我花了很多时间。我遇到的关于这个问题的S.O.帖子没有回答我的问题。正如丹尼斯指出的那样,最后只是等着睡觉。很抱歉,我没有仔细阅读你的帖子。我很高兴有一个简单的解决方案。祝你未来的事业好运。谢谢你,丹尼斯。这就是问题所在,真是太疯狂了。我还使用了'timer&'和'timer\u pid=$!'退出while循环,阻止它不断生成更多的壳。这是一个基于基本原则的基本脚本。现在开始学习如何更有效地完成这项工作。再次感谢。
#!/bin/bash
#
# display time at line begin.
#
tick () {
  t=$(date +%T)
  echo -en "\r$t > " 
  sleep 10
  tick
}
tick