在 while 循环中等待按键并停止脚本

xra*_*alf 5 bash

我想等待按键并在按下字母时退出q。该脚本不等待密钥。如何纠正呢?

while read line
do
    ...
    while :
    do
        read -n 1 key

        if [[ $key = q ]]
        then
            break
        fi
    done
done < $1
Run Code Online (Sandbox Code Playgroud)

Jay*_*got 6

read读取输入。

在您的脚本中,输入更改为$1.

第一级while循环是从名称存储到 的文件中读取一行$1,并read -n 1 key从同一文件中读取并存储下一行的第一个字符。

尝试一下:

while read line ; do
  while : ; do
    read -n 1 key <&1
    if [[ $key = q ]] ; then
      break
    fi
  done
done < $1
Run Code Online (Sandbox Code Playgroud)

<&1是标准输入。