Übergeben von mathematischen Gleichungen als Parameter an eine Schleifenfunktion

Übergeben von mathematischen Gleichungen als Parameter an eine Schleifenfunktion

Ich möchte mehrere Jobs parallel ausführen, indem ich ein Skript verwende, das ein parametrisiertes Skript seriell aufruft und es bei jedem Aufruf als Hintergrundjob absendet. Es handelt sich um ein Brute-Force-Skript, das bei jedem Aufruf 1.000 von insgesamt 10.000 Kombinationen ausführt.

Das Folgende ist mein erster Versuch.

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

Ich möchte, dass 1 $ als 0,1000,2000 usw. und 2 $ als 1000,2000,3000 usw. ausgewertet werden.

Das & dient dazu, das Skript als Hintergrundjob zu senden. Das aufgerufene Modul übergibt $1 und $2, die mit seq wie folgt verwendet werden sollen

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

Das erste Skript schlägt fehl mit unexpected token 'i*1000-1000'

Was habe ich falsch gemacht?

Antwort1

Das erste Skript schlägt fehl mitunexpected token 'i*1000-1000'

Was habe ich falsch gemacht?

$iDer offensichtliche Fehler besteht darin, dass Sie die Variable in Ihrer Schleife tatsächlich nicht aufrufen :

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

Es sollte sein:

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

Daher funktioniert die $iVerwendung der Variable „. an sich“ nicht.i

Informationen zum Ausführen mathematischer Berechnungen in der Shell finden Sie in Kommentar 2.

verwandte Informationen