在bash中以无限循环读取输入并对其作出反应

时间:2015-12-03 16:22:50

标签: bash loops input

所以我想等待1秒钟进行一些输入(我将在稍后实施的选项)。 或者我希望程序打印一些东西(稍后也会实现)。我遇到了一个问题,当试图读取该函数的1个字符时,这是我的代码:

while true
   do read $var -t 1
      case $var in
          ("h")
              help
              ;;
      esac
done

如果我在案例后尝试回复,程序会等待1秒,问题是它无法识别我的输入,我该如何解决?

1 个答案:

答案 0 :(得分:1)

我已稍微修改了您的样本,以便它可以正常工作。 read语句中有错误。使用read var代替read $var。此更正的样本现在也会识别h输入。

与您的问题相关为什么它不会等待第二个(,这很难确定,所以我稍微增加了超时; - ))?这是因为当您输入内容时,读取超时会中断。正如参数名称所示,用户输入超时。因此,如果用户输入超时被中断的东西。

#!/bin/bash

while true 
do
      echo 'wait for input ...'

      read -t 10 var

      echo 'got input ...'

      case $var in
        h)
          echo 'help'
        ;;
      esac
done