所以我想等待1秒钟进行一些输入(我将在稍后实施的选项)。 或者我希望程序打印一些东西(稍后也会实现)。我遇到了一个问题,当试图读取该函数的1个字符时,这是我的代码:
while true
do read $var -t 1
case $var in
("h")
help
;;
esac
done
如果我在案例后尝试回复,程序会等待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