我想做一个倒计时到n秒的shell函数(例如10),之后继续编写脚本。 我尝试了睡眠功能,但它确实完全停止了脚本。 我希望在用户在倒计时期间输入“y”时,它会停止倒计时并做一些特别的事情(很像“中断”)。 如果倒计时结束而没有任何用户输入,脚本将继续。
谢谢!
**更新* *
@KrzysztofKsiężyk这正是我想要的! 一个区别,如果我想要读取返回只有“Y”是输入我怎么能这样做?我已经尝试过-d和-a ......
这是我的代码:
label="NTFS"
read -n 1 -t 5 MS
if [ -z "$MS" ]
then
echo "You don't input value, default will be taken"
else
echo -e "\nYou pressed 'Y' and want change default backup device."
read -p "Please input label of your secondary backup device: " secondary_label
label=$secondary_label
fi
echo "the choosen backup device label is $label"
答案 0 :(得分:0)
您可以使用read
命令,例如
read -n 1 -t 10
只需1个字符即可等待10秒钟。
**更新**
基于作者额外信息的修改解决方案
CNT=0
while [ $CNT -lt 10 ]; do
(( CNT++ ))
read -s -n 1 -t 1 -r KEY
if [ "$KEY" == 'y' ]; then
echo 'doing something'
else
echo 'doing nothing'
fi
done
答案 1 :(得分:0)
如果你想要一个中断,你可能想要陷阱SIGINT:
# But there must return a CloudServer instance.
脚本计数到10,但是当用户发送SIGINT(例如ctrl-C)时,计时器将中止