按任意键,显示shell中显示的超时进度

时间:2016-03-17 09:28:59

标签: bash timeout pause

我想为用户提供按任意键的提示或等待超时以继续使用shell。通常这种情况通过以下习语来解决:

read -rs -t3 -n1 "Press any key or wait to continue ..."

然而,这个提示对我来说似乎有些笨拙,我想只留下“按任意键继续...”消息的一部分,并指示每秒打印点数超时。所以我写下面的脚本:

#!/bin/sh

echo -n "Press any key to continue";

for _ in `seq 3`; do
    if ! read -rs -n1 -t1 ; then echo -n "."; else break; fi
done

echo

它的工作方式与我预期的一样,但显然代码太多,所以我必须放入单独的文件而不是在脚本中使用sh -c "..."。有没有办法以更简洁和紧凑的方式实现它?

P.S。在Ctrl-C上按下非零错误代码是必须的。

1 个答案:

答案 0 :(得分:1)

更简洁一点:

echo -n "Press any key to continue";
for _ in {1..3}; do read -rs -n1 -t1 || printf ".";done;echo