时,计时器流产
我想执行一个壳功能,该功能倒数为n秒(示例10),然后继续脚本。我尝试使用睡眠功能,但确实完全停止了脚本。我想要像用户在此倒计时输入" y"之类的东西,它将停止倒计时并执行特定的事情(就像"中断")。如果倒计时没有任何用户输入,则脚本继续。
谢谢!
**更新**
@krzysztofksię梦克,这正是我想要的!一个区别,如果我只需要读取返回,那么当我输入是我该怎么做的?我已经尝试了-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"
您可以使用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
如果要中断,可能要捕获SIGINT:
#!/bin/sh
trap : SIGINT
echo begin
for((i=0;i<10;i++)); do printf "$ir"; sleep 1; done &
wait || kill $!
echo
echo end
脚本计算为10,但是当用户发送sigint(例如ctrl-c)