スクリプトは同時に複数のプロセスを同時に実行できますか?

スクリプトは同時に複数のプロセスを同時に実行できますか?

私のコードで複数のプロセスを同時に実行したいです。これ以下の例コードとソースは次のとおりです。スタックエクスチェンジ(Unix&Linux)ウェブサイト。

> #!/bin/bash
> for i in $(cat lis.txt); do
>      echo "$i"
>      wait
>      mkdir "$i"
>  done

この単純なコードは、テキストファイルに含まれる名前のリストからディレクトリリストを生成するように設計されています。コードを実行すると、フォルダが1つずつ生成されます。すべてのフォルダを同時に作成するには、つまりすべてのタスクを同時に実行するには、このコードをどのように変更する必要がありますか?

ベストアンサー1

スクリプトはの各行のディレクトリを作成しますlist.txt。空白を処理できますが、他の奇妙な文字(例:\r or\ t`などは処理できませんが、ここでは問題ではありません):

#!/usr/bin/env bash
while IFS= read -r dir
do
  mkdir -- "$dir" &
done < list.txt

&スクリプトが完了するのを待たずにすぐに続行するようにタスクをバックグラウンドに送信しますmkdir。これはほとんど確実に検出できませんが、mkdir他の作業では重要です。

後で参照できるように任意の文字を処理できる必要がある場合は、代わりにを使用してくださいread -r。また、より複雑な並列化タスクについては、次の点を確認してください。GNUパラレル

おすすめ記事