簡體   English   中英

如何在 Bash 中檢測 Enter 鍵或無輸入?

[英]How to detect Enter key or no input in Bash?

我想寫一個腳本在 X 秒后運行程序,如果用戶按 Enter 可以停止它

但它無法檢測用戶是否按下了 Enter 鍵或沒有輸入

#!/bin/bash
seconds=$((5))
holder='000'
while [ $seconds -gt 0 ]; do
    if [[ $holder = "" ]]; then 
        echo "Stop"
        exit
    else
        echo "Start in $seconds seconds, Press Enter to stop"
    fi
    IFS= read -r -t 1 -n 1 -s holder && var="$holder"
    : $((seconds--))
done
echo Start

如果發生超時, read失敗(即返回非零返回碼)。 所以就這么簡單:

if read -t 1
then
  echo Enter pressed
else
  echo Timeout happened
fi

所以在你的情況下,像這樣的事情,也許?

seconds=5
while [[ "$seconds" -gt 0 ]]; do
    echo "Start in $seconds seconds, Press Enter to stop"
    if read -t 1 -s
    then
        echo Stop
        exit
    else
        ((seconds--))
    fi
done
echo Start

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM