繁体   English   中英

如何检测输入 bash 读取?

[英]how to detect enter with bash read?

我有这个脚本

while true
do
 size=`tput lines`
 size1="$(($size-15))"
 output1=$(banner)
 output2=$(getMSG)
 clear
 echo "$output1"
 echo "$output2"
 read -t 0.1 -s -n 1 -p "Message: >> $msg" msg1
 if [[ $msg1 == *"\r"* ]]; then
  msg="enter"
 else
  msg="$msg$msg1"
 fi
 sleep 0.01
done

它工作正常,但我需要检测是否按下了回车键。 我怎样才能做到这一点?? 我的任何尝试都没有奏效。

我也试过检查它是否像\n\r^M ,但没有运气。

您可以使用read -N

[STEP 101] $ v=
[STEP 102] $ read -N 1 v
    <-- Press <ENTER>
[STEP 103] $ printf '%q\n' "$v"
$'\n'
[STEP 104] $

根据help read

-N nchars

仅在准确读取 NCHARS 字符后返回,除非遇到 EOF 或读取超时,忽略任何分隔符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM