Bash 按任意键定时器,跳到第节
我在读这篇文章: 似乎我可以实现类似的东西,这样我的脚本总是在等待x秒后有人按下一个键。我想改变的是,如果他们按了那个键,我想跳到脚本的特定部分 我怎样才能做到这一点呢?这个怎么样(改编自): 脚本使用一个名为was_key_pressed的变量,并将其值设置为空字符串。然后,如果在Bash 按任意键定时器,跳到第节,bash,Bash,我在读这篇文章: 似乎我可以实现类似的东西,这样我的脚本总是在等待x秒后有人按下一个键。我想改变的是,如果他们按了那个键,我想跳到脚本的特定部分 我怎样才能做到这一点呢?这个怎么样(改编自): 脚本使用一个名为was_key_pressed的变量,并将其值设置为空字符串。然后,如果在read功能中按下一个键,它将was\u key\u pressed的值设置为“true”,并中断循环 一旦循环退出,如果按下某个键,则会打印“Foo”一词,方法是检查was\u key\u pressed是否仍然是
read
功能中按下一个键,它将was\u key\u pressed
的值设置为“true”,并中断循环
一旦循环退出,如果按下某个键,则会打印“Foo”一词,方法是检查
was\u key\u pressed
是否仍然是空字符串,否则如果未按下任何键,则会打印“Bar”。我原以为这是按预期工作的,但事实并非如此,重新阅读您的解释,我认为问题在于:否则,“Foo”和“Bar”都会被打印出来“Bar”将被打印。我只想在哪里执行一个或另一个。我如何做到这一点?@Tony-我已经根据你的评论更新了我的答案。现在,如果按下一个键,“foo”将被执行,否则“Bar”将被打印。如果这是你想要的,请告诉我:-)
#!/bin/bash
was_key_pressed=
for (( i=10; i>0; i--)); do
printf "\rHit any key to show 'Foo', or wait $i seconds and 'Bar' will be displayed..."
read -s -n 1 -t 1 key
if [ $? -eq 0 ]
then
was_key_pressed="true"
break
fi
done
echo
if [ "${was_key_pressed}" ]; then
echo "Foo"
else
echo "Bar"
fi