从文本文件中显示特定时间的特定字符

从文本文件中显示特定时间的特定字符

如何使用循环在给定时间内显示特定数量的单词或字符。假设我想在一分钟内显示 120 个单词。

这是我尝试过的循环:

FS=$'\n'
for j in `cat $1`;
do
        echo "$j";
        sleep  1;
        clear;
done

这个只需要一秒钟,但对于一分钟内 120 个单词或类似的情况则不起作用。我该怎么做?

答案1

sleep 命令会延迟指定的时间(以秒为单位)。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

答案2

在 bash 中使用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 

相关内容