顯示文字檔案中特定時間的特定字符

顯示文字檔案中特定時間的特定字符

如何使用循環在給定時間內顯示特定數量的單字或字元。假設我想在一分鐘內顯示 120 個單字。

這是我嘗試過的循環:

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

這個只需要一秒鐘,但不能在一分鐘內寫 120 個單字或類似的內容。我怎樣才能做到這一點?

答案1

sleep 指令會延遲指定的時間(以秒為單位)。延遲sleep 1為 1 秒(每秒一個字)。您可以透過增加第二個參數來更改更長的時間延遲,或將其劃分為低單位以延遲小於 1 秒;例如sleep .11/10 秒延遲或sleep .0011/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 

相關內容