Передача математических уравнений в качестве параметров в функцию цикла

Передача математических уравнений в качестве параметров в функцию цикла

Я хочу запустить несколько заданий параллельно, используя скрипт, который делает последовательные вызовы параметризованного скрипта и отправляет его как фоновое задание при каждом вызове. Это для скрипта brute force, который при каждом вызове будет запускать 1k из 10k общих комбинаций.

Ниже представлен мой первый опыт в этом направлении.

#!/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 и т. д.

& — это отправка скрипта в качестве фонового задания. Вызванный модуль передаст $1 и $2 для использования с seq следующим образом

#/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.

Связанный контент