Я хочу запустить несколько заданий параллельно, используя скрипт, который делает последовательные вызовы параметризованного скрипта и отправляет его как фоновое задание при каждом вызове. Это для скрипта 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.