텍스트 파일의 변수를 한 줄씩 병렬 스크립트로 전달하는 방법

텍스트 파일의 변수를 한 줄씩 병렬 스크립트로 전달하는 방법

스크립트가 병렬로 실행되도록 파일을 한 줄씩 읽고 문자열을 변수로 전달해야 합니다.

전임자:

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

관련 정보