forループを制御する方法は何ですか?

forループを制御する方法は何ですか?

次のような「forループ」があるとします。

#!/bin/bash
for i in $(cat test_file); do 
echo $i
done

テキストファイルの内容は親フォルダのフォルダ名です。

text_fileに10000個の項目(変数iなど)が含まれている場合、「forループ」が10個の「エコー」ごとに10秒間休止するように指示するにはどうすればよいですか?つまり、forループがtext_fileから変数iを読み取るときに、各特定の期間にforループが実行できる変数の数を制御する方法は何ですか?したがって、出力は次のようになります。

   Variable #1
   Variable #2
   Variable #3
   .
   .
   .
   .
   sleep 10
    Variable #11
    Variable #12
    Variable #13
   .
   .       .

ベストアンサー1

以下を使用してください強く打つスクリプト(10回の「エコー」の間に10秒間睡眠をとります。):

test.shスクリプトのテスト名

#!/bin/bash
while ((++i)); read -r line
do
    echo "$line"
    if (( "$i" % 10 == 0)) 
    then
        sleep 10
    fi
done < $1

使用法:

bash test.sh test_file

while ((++i))- 入力から行が返されるたびにiカウンタread -r lineをインクリメントします。

if (( "$i" % 10 == 0))- 現在の行番号がi分割されていることを確認します10(実行フローが次の10行に達することを意味します)。

sleep 10- 10秒間スクリプトを一時停止

おすすめ記事