2

ユーザーに、任意のキーを押すか、タイムアウトになるのを待ってシェルの使用を続行するように求めるプロンプトを表示したいと考えています。通常、このケースは次のイディオムで解決されます。

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

ただし、このプロンプトは私には少し不器用に思えます。メッセージの「Press any key 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

期待どおりに動作しますが、明らかにコードが多すぎるため、as sh -c "..."in script ではなく別のファイルに入れる必要があります。より簡潔でコンパクトな方法で実装する方法はありますか?

Ctrl-CPS押されたときにゼロ以外のエラーコードを返すことは必須です。

4

1 に答える 1

2

もう少し簡潔に:

echo -n "Press any key to continue";
for _ in {1..3}; do read -rs -n1 -t1 || printf ".";done;echo
于 2016-03-17T10:35:14.570 に答える