2013-02-16 4 views
1

나는 형태의 $hosts_string라는 변수와 C 쉘 스크립트가 또한 처리해야하는 텍스트 파일을 지정하는 $inputFn이라는 변수가 있습니다.GNU 평행

각 호스트가 $chrs_string의 각 구성원에 doStuff이라는 명령을 실행하고 입력 파일 이름 인수로 $inputFn을 가져 오도록하고 싶습니다.

나는 다음과 같은 노력이 작동하는 경우

parallel -S $hosts_string 'doStuff {1} {2} > {1}' ::: {$chrs_string} ::: {$inputFn} 

, 이것은 명령 doStuff에서 출력으로 chrM를 통해 파일을 chr1을 만들어야합니다,하지만 난 아무것도 얻을 수 없다. 병렬은 오류를 발행하지 않고 완료되지만 출력은 없습니다.

parallel을 사용하지 않으면 명령 자체가 잘 작동하므로 명령이 아니지만 parallel에 인수를 지정하는 방법입니다. 이 작동했다 경우

parallel -S $hosts_string 'echo {1} {2} > {1}' ::: {$chrs_string} ::: {$inputFn} 

$inputFn/foo/bar (예를 들어), 나는 (예를 들어) 얻을 것입니다 파일이 chr1 전화 :

은이를 확인하기 위해, 나는 다음과 같은 시도 이 $chrs_string 및의 각 조합을 통해 루프 있도록

chr1 /foo/bar 

가 어떻게 내 parallel 명령을 조정 않습니다 : 문자열을 포함하는올바르게?

답변

0

당신이 가까이 있습니다. 이 작동하지 않는

parallel -S $hosts_string echo '{1}' {$inputFn} '> {1}' ::: {$chrs_string} 
+0

: 당신은 당신이 간단하게 할 에코의 파일 이름을 원하는 경우에 당신은 잊었 ::: ::::

parallel -S $hosts_string 'echo {1} {2} > {1}' ::: {$chrs_string} :::: {$inputFn} 

와 동일하지 않습니다. 간단히''echo {1} {2} ''는'$ inputFn'의 텍스트 내용을 보여 주며, 그 파일의 경로명은 아닙니다. 이것은 올바른 동작이 아닙니다. –

+0

그러면 내가 원하는 것이 무엇인지 불분명합니다. 더 많은 아이디어를 얻기 위해 내 대답을 편집했습니다. 그 질문에 대한 답변을하지 않는 경우, '병렬 버전'의 출력, 입력 및 예상 출력을 게시하십시오. –

+0

및 실행할 명령. –