매개변수화된 스크립트를 직렬 호출하고 호출할 때마다 백그라운드 작업으로 제출하는 스크립트를 사용하여 여러 작업을 병렬로 실행하고 싶습니다. 이것은 각 호출에서 10,000개의 조합 중 1,000개를 실행하는 무차별 대입 스크립트입니다.
아래는 나의 첫 번째 균열입니다.
#!/bin/bash
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh (i*1000-1000) (i*1000) &
done
나는 $1이 0,1000,2000 등으로 평가되고 $2가 1000,2000,3000 등으로 평가되기를 원합니다.
&는 스크립트를 백그라운드 작업으로 제출하는 것입니다. 호출된 모듈은 아래와 같이 seq와 함께 사용하기 위해 $1과 $2를 전달받습니다.
#/bin/bash/
for n in $(seq $1 1 $2)
do
...`
첫 번째 스크립트는 다음과 같이 실패합니다.
unexpected token 'i*1000-1000'
내가 뭘 잘못했나요?
답변1
첫 번째 스크립트는 다음과 같이 실패합니다.
unexpected token 'i*1000-1000'
내가 뭘 잘못했나요?
명백한 실수는 실제로 $i
루프에서 변수를 호출하지 않는다는 것입니다.
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh (i*1000-1000) (i*1000) &
done
그것은해야한다:
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh ($i*1000-1000) ($i*1000) &
done
따라서 $i
변수를 사용할 때 사용됩니다. i
그 자체로는 작동하지 않습니다.
셸에서 수학을 수행하는 방법은 참고 2를 참조하세요.