Bash 按任意键定时器,跳到第节

Bash 按任意键定时器,跳到第节,bash,Bash,我在读这篇文章: 似乎我可以实现类似的东西,这样我的脚本总是在等待x秒后有人按下一个键。我想改变的是,如果他们按了那个键,我想跳到脚本的特定部分 我怎样才能做到这一点呢?这个怎么样(改编自): 脚本使用一个名为was_key_pressed的变量,并将其值设置为空字符串。然后,如果在read功能中按下一个键,它将was\u key\u pressed的值设置为“true”,并中断循环 一旦循环退出,如果按下某个键,则会打印“Foo”一词,方法是检查was\u key\u pressed是否仍然是

我在读这篇文章:

似乎我可以实现类似的东西,这样我的脚本总是在等待x秒后有人按下一个键。我想改变的是,如果他们按了那个键,我想跳到脚本的特定部分

我怎样才能做到这一点呢?

这个怎么样(改编自):

脚本使用一个名为was_key_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