【问题标题】:Reading input in bash in an infinite loop and reacting to it在无限循环中读取 bash 中的输入并对其做出反应
【发布时间】:2015-12-03 16:22:50
【问题描述】:

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

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

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

【问题讨论】:

    标签: bash loops input


    【解决方案1】:

    我已经稍微修改了您的示例以使其正常工作。读取语句中有错误。使用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
    

    【讨论】:

    • 谢谢,这是学校的作业,它需要列出当前进程的信息并每秒刷新一次,还可以根据您按某些键更改输出的内容
    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多