超时用户输入csh shell

时间:2014-02-14 17:40:46

标签: input timeout csh

是否可以超时c shell的用户输入?到目前为止我的代码是:

    #!/bin/csh -f 


    set COUNT = 5
    printf "INFO: Start ok (0/1)? "
    set INPUT = 0

    while ($COUNT > 0 && $INPUT == 0)
      printf "\b%d" "$COUNT"
      set INPUT = <$
      sleep 1
      @ COUNT --
    end

    if ($INPUT == 1) then
    ./execute.sh
    end

如果没有给出输入,我想执行一个shell脚本;如果不是我想跳过这一部分。 不幸的是,skript没有跳过输入部分但是等待输入。解决这个问题的方法有哪些 非常感谢你们!

1 个答案:

答案 0 :(得分:0)

尝试使用tcsh shell中的非阻塞用户输入:

set TMPFILE = `mktemp`
set COUNT = 5
printf "INFO: Start ok (0/1)? "
stty -F /dev/tty -icanon
while ($COUNT > 0 && -z $TMPFILE)
  printf "\b%d" "$COUNT"
  sleep 1
  (dd bs=1 count=1 iflag=nonblock > $TMPFILE) >& /dev/null
  set INPUT = `cat $TMPFILE`
  @ COUNT--
end
stty -F /dev/tty icanon
echo ""
if ("$INPUT" == "1") then
  ./execute.sh
endif