Angenommen, Sie möchten zehn Mal ausgeführt werden, funktioniert diese Syntax:
parallel -n0 foo.sh ::: {1..10}
parallel
benötigt eine Eingabesequenz von einiger Länge ( ::: {1..10}
) UND Sie müssen den Inhalt der Eingabesequenz ( -n0
) ignorieren , Sie kümmern sich nur um deren Länge.
Ihr ursprünglicher Befehl: parallel foo.sh
enthält keine Eingabesequenz, die angibt, wie viel Parallelität Sie wünschen. Die kryptische Warnung sagt Ihnen, dass parallel
das Terminal nach einer Eingabesequenz abgehört wird und dass dies wahrscheinlich nicht das ist, was Sie wollen.
Hier ist das Tutorial-Beispiel:
seq 10 | parallel -n0 my_command my_args
Wie es funktioniert:
parallel
nimmt immer eine Eingabesequenz von irgendwoher. :::
Dies kann eine durch Leerzeichen getrennte Inline-Sequenz sein, der ODER eine durch Zeilenumbrüche getrennte Sequenz aus einer Datei oder einer dateiähnlichen Quelle wie einer Pipe vorangestellt ist. In diesem Beispiel stammt die Eingabesequenz aus einer Pipe.
seq 10
erzeugt eine durch Zeilenumbrüche getrennte Folge von Ziffern von eins bis zehn.
- Die
-n0
Option weist parallel an, die Werte in der Eingabesequenz zu ignorieren. Wir kümmern uns nur um die Länge der Sequenz, nicht um ihren Inhalt. Auch wenn die Ziffern nicht verwendet werden, wird der Befehl zehnmal ausgeführt.
Ein anderes Beispiel:
parallel -n0 echo -n 'x' ::: {1..5}
Wie es funktioniert:
- Die Eingabesequenz ist inline.
{1..5}
erzeugt eine durch Leerzeichen getrennte Folge von Ziffern von eins bis fünf.
-n0
ignoriert Sequenzwerte (und wir geben 'x'
stattdessen jedes Mal die Zeichenfolge wieder.)
- Ausgabe:
xxxxx
Vergleichen mit:
parallel echo -n ::: {1..5}
Wie es funktioniert:
- Die Eingabesequenz ist inline.
{1..5}
erzeugt eine durch Leerzeichen getrennte Folge von Ziffern von eins bis fünf.
- Jeder Wert aus der Eingabesequenz wird als Argument für verwendet
echo
. Bestellung nicht garantiert.
- Ausgabe :
43215
. Könnte jede Bestellung sein.