Pasar ecuaciones matemáticas como parámetros a una función de bucle

Pasar ecuaciones matemáticas como parámetros a una función de bucle

Quiero ejecutar varios trabajos en paralelo usando un script que realiza llamadas en serie a un script parametrizado y lo envía como trabajo en segundo plano en cada llamada. Es para un script de fuerza bruta que en cada llamada ejecutará 1k de 10k combinaciones en total.

El siguiente es mi primer truco.

#!/bin/bash
for i in $(seq 10)
do
    ./tmp/tmpsky/bd25Par.sh (i*1000-1000) (i*1000) &
done

Quiero $1 para evaluar como 0,1000,2000, etc... y $2 para evaluar como 1000,2000,3000, etc.

El & es para enviar el script como trabajo en segundo plano. El módulo llamado pasará $1 y $2 para usarse con seq de la siguiente manera

#/bin/bash/
for n in $(seq $1 1 $2)
do
...`

El primer guión falla con unexpected token 'i*1000-1000'

¿Qué he hecho mal?

Respuesta1

El primer guión falla conunexpected token 'i*1000-1000'

¿Qué he hecho mal?

El error obvio es que en realidad no estás llamando a la variable $ien tu bucle:

for i in $(seq 10)
do
    ./tmp/tmpsky/bd25Par.sh (i*1000-1000) (i*1000) &
done

Debería ser:

for i in $(seq 10)
do
    ./tmp/tmpsky/bd25Par.sh ($i*1000-1000) ($i*1000) &
done

De este modo; utilizar $icuando se utiliza la variable. ipor sí solo no funcionará.

En cuanto a hacer cálculos en el shell, consulte el comentario número 2.

información relacionada