Quero executar vários trabalhos em paralelo usando um script que faz chamadas seriais para um script parametrizado e o envia como um trabalho em segundo plano em cada chamada. É para um script de força bruta que em cada chamada executará 1k de 10k combinações no total.
O seguinte é meu primeiro hack nisso.
#!/bin/bash
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh (i*1000-1000) (i*1000) &
done
Quero que $1 seja avaliado como 0,1000,2000 etc... e $2 seja avaliado como 1000,2000,3000 etc.
O & é enviar o script como um trabalho em segundo plano. O módulo chamado passará $1 e $2 para ser usado com seq da seguinte forma
#/bin/bash/
for n in $(seq $1 1 $2)
do
...`
O primeiro script falha com
unexpected token 'i*1000-1000'
O que eu fiz errado?
Responder1
O primeiro script falha com
unexpected token 'i*1000-1000'
O que eu fiz errado?
O erro óbvio é que você não está chamando a variável $i
em seu loop:
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh (i*1000-1000) (i*1000) &
done
Deveria ser:
for i in $(seq 10)
do
./tmp/tmpsky/bd25Par.sh ($i*1000-1000) ($i*1000) &
done
Por isso; use $i
ao usar a variável. i
por si só não funcionará.
Quanto a fazer contas no shell, veja o comentário número 2.