Bash
默默地逐個字元地讀取是行不通的
我正在嘗試按字元讀取使用者輸入字元,如下所示:
而[1];**讀 -s -N** 1 ... 完畢
雖然這個循環使用 VNC ( ) 可以完美
xterm
執行,但它只能部分使用 putty (xterm) 或 Linux 終端,以及大多數其他文本終端。當我對鍵盤變得“狂野”並同時敲擊多個鍵時遇到了問題,並且儘管使用了 -s 模式,但某些鍵仍會回顯。
我也嘗試過重定向輸出和
stty -echo
. 雖然第一個沒有任何區別,但後者會有所幫助,最大限度地減少“迴聲”的頻率,但並不完美。有任何想法嗎?
read -s``echo
僅在該read
命令執行期間禁用終端。因此,如果您在兩個read
命令之間鍵入一些內容,終端驅動程序會將echo
其返回。您應該禁用
echo
然後read
在沒有以下情況下呼叫循環-s
:if [ -t 0 ]; then saved=$(stty -g) stty -echo fi while read -rN1; do ... done if [ -t 0 ]; then stty "$saved" fi