我一直把头发拉出来。我是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
答案 0 :(得分:2)
尝试将wait 1
更改为sleep 1
。
答案 1 :(得分:0)
由于您熟悉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
答案 2 :(得分:0)
#!/bin/bash
#
# display time at line begin.
#
tick () {
t=$(date +%T)
echo -en "\r$t > "
sleep 10
tick
}
tick
如果您将其称为带./tick.sh &
的脚本,它将始终在行的开头打印时间,但会干扰您自己的输入。
您可以将时间集成到提示中(请参阅man:bash / PROMPTING),但这不会实现时间,只需在插入的每个命令后显示新时间。