"source" 명령을 사용하여 동시에 명령을 실행하는 방법은 무엇입니까?

"source" 명령을 사용하여 동시에 명령을 실행하는 방법은 무엇입니까?

ex01예를 들어 (C++ 프로그램)이라는 실행 파일이 있습니다 .

다양한 매개변수를 사용하여 이 프로그램에 대한 호출 집합이 포함된 텍스트 파일이 있습니다.

텍스트 파일은 다음과 같습니다.

./ex01 command1 > ex.dat  &
./ex01 command2 >> ex.dat &
./ex01 command3 >> ex.dat &
...

source이 명령을 사용하여 이 작업을 자동화 할 수 있습니다 .

하지만 나는 두 가지를 동시에 하고 싶다. 어떻게 해야 하나요?

답변1

파일을 가져오는 대신 별도의 셸에서 실행해야 합니다. 이 source명령은 현재 셸에서 스크립트 내용을 실행합니다.

$ cat script.sh
./ex01 command1 > ex.dat;
./ex01 command1 > ex.dat;
...
$ sh script.sh
 ...

세미콜론은 필요하지 않습니다.

./ex01 command1 > ex.dat
./ex01 command1 > ex.dat
...

명령을 병렬로 실행하려면 &각 명령 끝에 앰퍼샌드( )를 추가하세요.

./ex01 command1 > ex.dat &
./ex01 command1 > ex.dat &
...

두 명령 모두 단일 파일에 쓰기 때문에 위의 내용은 문제가 될 수 있습니다. 다른 파일에 써야 합니다.

./ex01 command1 > ex1.dat &
./ex01 command1 > ex2.dat &
...

또는 파일에 추가됩니다.

./ex01 command1 >> ex1.dat &
./ex01 command1 >> ex2.dat &
...

스크립트가 동일한 줄을 계속해서 반복하는 경우 루프를 사용할 수 있습니다.

# Run 10 times
for i in $(seq 1 10) ; do
    ./ex01 command1 >> ex1.dat &
 done

편집하다:매개변수 수가 선형적으로 변경되는 경우 다음과 같은 루프를 사용할 수 있습니다.

# Run 10 times
for i in $(seq 1 10) ; do
    ./ex01 command$i >> ex.dat &
done

관련 정보