Я хочу предоставить пользователю приглашение нажать любую клавишу или дождаться тайм-аута, чтобы продолжить использование оболочки. Обычно этот случай решается следующей идиомой:
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
является обязательным.