/ /タイムアウトユーザー入力cshシェル - 入力、タイムアウト、csh

タイムアウトユーザ入力cshシェル - 入力、タイムアウト、csh

cシェルへのユーザー入力をタイムアウトすることは可能ですか?私のコードはこれまでのところ:

    #!/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

何も入力がなければ、シェルを実行したいスクリプト;そうでなければ私はこの部分をスキップしたいです。 残念ながら、skriptは入力部分をスキップせずに入力を待ちます。この問題に対する解決策はありますか? どうもありがとうございます。

回答:

回答№1は0

tcshシェルでの非ブロッキングユーザー入力に対してこれを試してください。

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