Bashで無限文字列パイプを作成する方法

Bashで無限文字列パイプを作成する方法

links.txtファイルには約10個のリンクがあります。私はそれを通してダウンロードしました

cat links.txt | xargs -i --max-procs=4 bash -c "wget {}"

何度もやりたいです。

while :
do
   cat links.txt | xargs -i --max-procs=4 bash -c "wget {}"
done

whileループの次の繰り返しの前に、すべての子プロセスが完了するのを待ちます。しかし、利用可能なスレッドがある場合は、ダウンロードを続けたい(ファイルの先頭からURLを取得)。どうすればいいですか?たぶん無限のジュールパイプを作ることはできませんか?

ベストアンサー1

yes文字列パラメータを許可する場合:

yes links.txt | xargs cat | xargs -n1 --max-procs=4 wget

catPerlを実行したりリンクごとにPerlを実行したりするlinks.txtことは意味がありません(または行などのシェルコードとして解釈されることをbash望まない限り)。links.txthttp://$host$pathhttp://evil;rm -rf /

ファイルが十分に小さい場合は、次のこともできます。

yes -- "$(cat links.txt)" | xargs -n1 -P4 wget

おすすめ記事