在bash中读取语句帮助验证按下的任何键

时间:2014-06-10 09:56:19

标签: bash

当我在shell中使用read语句时

read -n 1 -s -t 5 -p "Starting the script in 5 seconds. Press any key to stop!" yn

如何检查是否按下任何键,如果按下某个键,则脚本必须退出,否则脚本必须继续?

2 个答案:

答案 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