Как отображать определенное количество слов или символов за заданное время, используя цикл. Допустим, я хочу отобразить 120 слов за одну минуту.
Вот цикл, который я пробовал:
FS= Этот цикл занимает всего одну секунду, но не работает для 120 слов в одну минуту или что-то подобное. Как я могу это сделать?
\n'
for j in `cat $1`;
do
echo "$j";
sleep 1;
clear;
done
Этот цикл занимает всего одну секунду, но не работает для 120 слов в одну минуту или что-то подобное. Как я могу это сделать?
Команда сна делает задержку указанного количества времени (в секундах). С sleep 1
задержка была бы в течение 1 секунды (одно слово в секунду). Можно измениться для большего количества задержки путем постепенного увеличения второго параметра или для задержки меньше чем 1 второго деления это к низким единицам; Как sleep .1
для 1/10 второй задержки или sleep .001
для 1/1000 второй задержки и и т.д.
Поэтому, если Вы хотите отобразить 120 слов в минуту, можно использовать sleep .5
(который означает, отображают каждое слово за 0,5 секунды, которые также означают 120 слов за минуту)
, И заключительный сценарий как следовал бы:
#!/bin/bash
for word in $(< "$2");
do
echo "$word";
sleep $1;
clear;
done
Сохраняют сценарий, названный scriptname.sh
, и делают его как исполняемый файл chmod +x scriptname.sh
и затем выполняют сценарий с ./scriptname.sh .5 infile
Это - частая практика для использования while read line ; do . . .; done
структура в ударе для чтения файла линию за линией. Принятие Вашего входного файла имеет одно слово на строку, легко сделать что-то вроде этого:
while read line; do printf "%s\n" "$line" ; sleep 3; done < input.txt
Python может сделать это довольно легко:
#!/usr/bin/env python
import sys,time
for line in sys.stdin:
print line.strip()
sys.stdout.flush()
time.sleep(1)
Использование:
python print_with_delay.py <input.txt