次のような「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秒間スクリプトを一時停止