Created
April 27, 2020 12:51
-
-
Save nngogol/6b23ab283e09bf4a6e638f0ac33c988f to your computer and use it in GitHub Desktop.
Скрипт-тест консольного ввода
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# ------------------------------------------------------ | |
# [ Дата создания: 2020-04-27 15:47:03 | |
# [ Название файла: test_my_keyboard_input.sh | |
# [ Название: Скрипт для теста консольный приложений | |
# [ Автор: nngogol | |
# ------------------------------------------------------ | |
# | |
# Интерфейс: | |
# $ bash test_my_keyboard_input.sh | |
# | |
# Суть скрипта: | |
# 1) запустить некие вычисления в bg¹ | |
# 2) реагировать на нажатие клавиш пользователя (stdin), | |
# показывая ему сообщения (stdout) | |
# | |
# | |
# | |
# ! Обрати внимание ! | |
# Заметка 1: | |
# counterUp - это переменная-счетчик, | |
# который инкрементируемся каждые sleep_time секунд | |
# Заметка 2: | |
# Замечательная команда: | |
# $ read -a ch -N 1 -t $sleep_time -s | |
# | |
# -a ch -t $sleep_time -N 1 | |
# делает счение в переменную ch, спит sleep_time, и читает только один символ | |
# | |
# | |
# | |
# | |
# | |
# P.S. | |
# ¹ - bg == background | |
max_lvl=$1 | |
max_lvl=${max_lvl:=100} # если $1 не передан, то пусть будет 100 | |
counterUp=0 | |
sleep_time=0.1 | |
ch= | |
echo Starting process | |
while [ 1 ]; do | |
# main part: | |
read -a ch -N 1 -t $sleep_time -s | |
counterUp=$(( counterUp + 1 )) | |
# Причина остановить: счетик | |
[[ "$max_lvl" == "$counterUp" ]] && break | |
# Реакция | |
if [[ "$ch" == "q" ]]; then | |
echo stop && break | |
elif [[ "$ch" == "s" ]]; then | |
echo status: | |
echo "currenty : $counterUp" | |
echo "max level: $max_lvl" | |
echo ' ----------' | |
echo "IN PROCESS $(( 100 * $counterUp / $max_lvl ))%" | |
echo | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment