当我在shell中使用read语句时
read -n 1 -s -t 5 -p "Starting the script in 5 seconds. Press any key to stop!" yn
如何检查是否按下任何键,如果按下某个键,则脚本必须退出,否则脚本必须继续?
答案 0 :(得分:0)
您可以使用循环并将read
的时间限制为一秒:
#!/bin/bash
shouldStop=0
for (( i=5; i>0; i--)); do
printf "\rStarting script in $i seconds. Press any key to stop!"
read -s -n 1 -t 1 key
if [ $? -eq 0 ]
then
shouldStop=1
fi
done
if [ $shouldStop==1 ]
then
printf "do not run script"
else
printf "run script"
fi
答案 1 :(得分:0)
简单地:
read -n 1 -s -t 5 -p "Starting the script in 5 seconds. Press any key to stop!" && \
exit 1
当读取密钥时,read
会返回0
,这将允许&&
处理下一个语句exit 1
。这将结束你的脚本。
您也不必指定变量,因此您不需要它。 read
使用默认变量$REPLY
。