Ersetzung innerhalb der parallelen Befehlszeichenfolge

Ersetzung innerhalb der parallelen Befehlszeichenfolge

Ich möchte mehrere Dateien herunterladen und sie in der MD5-Summe ihres Namens speichern:

cat list | parallel -j4 "md5=$(wget -O - {} | tee tmpfile_{#} | md5sum | cut -d ' ' -f 1); mv tmpfile_{#} $md5"

aber das Problem ist, dass bash den wget-Kram vor der Ausführung von parallelen Ersetzungen auszuführen scheint {}... also will wget herunterladen vonhttp://{}

wie können also die Variablen vor der Ausführung des Unterbefehls parallel ersetzt werden?

Antwort1

einige Versuche und Irrtümer später:

cat list | parallel -j4 'md5=$(wget -O - {} | tee tmpfile_{#} | md5sum); mv tmpfile_{#} ${md5%% *}'

Ersetzen Sie einfach "durch. 'Bash kann nicht zuerst etwas ersetzen.

verwandte Informationen