매개변수화된 스크립트에 대한 직렬 호출을 수행하고 호출할 때마다 백그라운드 작업으로 제출하는 스크립트를 사용하여 여러 작업을 병렬로 실행하고 싶습니다. 각 호출에서 총 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를 참조하십시오.