스크립트가 병렬로 실행되도록 파일을 한 줄씩 읽고 문자열을 변수로 전달해야 합니다.
전임자:
14
43
57
foo.txt에 위치
var=$(cat foo.txt)인 경우 스크립트 내에서 이 $var를 사용할 수 있지만 스크립트를 실행하는 모든 인스턴스에 대해 이 변수를 변경하기 위해 병렬을 어떻게 호출합니까?
답변1
만약 너라면진짜변수를 설정하고 싶습니다:
parallel -a foo.txt 'myvar={}; myscript'
하지만 그 외에는 Tom의 솔루션이 대부분의 경우 원하는 것일 것이라고 생각합니다.
답변2
파일에서 읽는 -a 플래그와 함께 GNU Parallel을 사용할 수도 있습니다.
parallel -a foo.txt echo
14
43
57
이것은 가장 멋진 예는 아니지만 텍스트 파일의 모든 인수에 대해 동일한 명령을 한 줄씩 실행합니다. 병렬로 실행할 프로세스 수를 지정하려면 -j 플래그를 포함하십시오.
답변3
당신은 그것을 사용할 수 있습니다매개변수.
예를 들면 다음과 같습니다. -input.txt
1
2
3
4
실행하라는 명령command.sh
#/bin/bash
echo $1: start
date
sleep 2s
echo $1 : stop
date
병렬로 실행:
➜ /tmp cat input.txt| xargs -n 1 -P 4 ./command.sh
1: start
3: start
2: start
4: start
Tue May 19 19:03:30 IDT 2015
Tue May 19 19:03:30 IDT 2015
Tue May 19 19:03:30 IDT 2015
Tue May 19 19:03:30 IDT 2015
1 : stop
4 : stop
3 : stop
2 : stop
Tue May 19 19:03:32 IDT 2015
Tue May 19 19:03:32 IDT 2015
Tue May 19 19:03:32 IDT 2015
Tue May 19 19:03:32 IDT 2015