我需要等待输入20秒,之后myscript应该继续执行
我尝试过使用read -t20 var
,但这只适用于bash。我在Solaris 10上使用ksh。
有人能帮助我吗?
编辑:20秒只是一个例子。我们假装它需要等待1个小时。但是这个家伙可以或者不可能在PC前面写输入,他不需要等待1小时输入输入,但是如果他不在PC前面那么shell应该在等待后继续执行一段时间。
谢谢!
答案 0 :(得分:2)
来自man ksh
:
TMOUT
如果设置为大于零的值,则在发出PS1提示后,如果未在指定的秒数内输入命令,则shell将终止。 shell可以使用该值的最大边界进行编译,该值不能超过。
我不确定这是否适用于Solaris上的read
中的ksh
。它适用于ksh93,但该版本也有read -t
。
This script包含这种方法:
# Start the (potentially blocking) read process in the background
(read -p && print "$REPLY" > "$Tmp") & readpid=$!
# Now start a "watchdog" process that will kill the reader after
# some time:
(
sleep 2; kill $readpid >/dev/null 2>&1 ||
{ sleep 1; kill -1 $readpid >/dev/null 2>&1; } ||
{ sleep 1; kill -9 $readpid; }
) & watchdogpid=$!
# Now wait for the reading process to terminate. It will terminate
# reliably, either because the read terminated, or because the
# "watchdog" process made it terminate.
wait $readpid
# Now stop the watchdog:
kill -9 $watchdogpid >/dev/null 2>&1
REPLY=TERMINATED # Assume the worst
[[ -s $Tmp ]] && read < "$Tmp"
答案 1 :(得分:1)
看看this forum thread它在第三篇文章中有答案。