web-dev-qa-db-ja.com

単一行のbashループで&(アンパサンド)を使用する

私はこのコマンドを正常に使用しており、設定ファイルの変数を変更して、ループ内でPythonスクリプトを実行します。

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py; done

DoMyScript.py自体が終了するまでの実行に約30秒かかります。次のスポーンが発生する可能性がある間に、それらをバックグラウンドに委任したいと思います。

以下のようにアンパサンドを追加することで、私が慣れ親しんだものを試しました。

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py &; done

ただし、これにより以下のエラーが発生します。

-bash:予期しないトークン `; 'に近い構文エラー

61
ljs.dev

落とす ;&。これは 構文上の要件

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py & done
91
iruvar

1_CRの答え に関するStephaneのコメントを考えると、おそらく次のようになります。

for i in {114..255}; do { echo $i > numbers.txt && python DoMyScript.py; } & done
14
glenn jackman

;を失う:

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py & done
11