Passando equações matemáticas como parâmetros para uma função de loop

Passando equações matemáticas como parâmetros para uma função de loop

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 comunexpected token 'i*1000-1000'

O que eu fiz errado?

O erro óbvio é que você não está chamando a variável $iem 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 $iao usar a variável. ipor si só não funcionará.

Quanto a fazer contas no shell, veja o comentário número 2.

informação relacionada