Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在无限循环中读取bash中的输入并对其作出反应_Bash_Loops_Input - Fatal编程技术网

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

在无限循环中读取bash中的输入并对其作出反应,bash,loops,input,Bash,Loops,Input,所以我想等待1秒,等待一些输入(稍后将实现的选项)。 或者我希望程序打印一些东西(稍后也将实现)。我遇到了一个问题,在尝试读取函数的1个字符时,我的代码如下: while true do read $var -t 1 case $var in ("h") help ;; esac done 如果我在案例之后尝试回显,程序确实会等待1秒,问题是它无法识别我的h输入,我将如何修复它?我已稍微修

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

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

如果我在案例之后尝试回显,程序确实会等待1秒,问题是它无法识别我的h输入,我将如何修复它?

我已稍微修改了您的示例,使其正常工作。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

谢谢,这是学校的作业,它需要列出当前进程的信息并每秒刷新一次,还需要根据您按某些键来更改输出