병렬 명령 문자열 내부 교체

병렬 명령 문자열 내부 교체

여러 파일을 다운로드하여 해당 이름의 md5 합계에 저장하고 싶습니다.

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

하지만 문제는 bash가 병렬 교체를 실행하기 전에 wget 항목을 실행하는 것 같다는 것입니다 {}. 그래서 wget은 다음에서 다운로드하려고 합니다.http://{}

그러면 하위 명령을 실행하기 전에 병렬로 변수를 어떻게 대체할 수 있습니까?

답변1

나중에 몇 가지 시행착오를 겪었습니다.

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

그냥 교체 "하면 'bash가 먼저 무언가를 교체하는 것을 허용하지 않습니다.

관련 정보