Bei dem for i kennst du die Anzahl vorher nicht. Du kannst höchstens in der Schleife mitzählen, aber du weißt nicht, wieviel da noch kommen wird.
Du könntest es so machen:
| anzahl=$(set -- "${Path}"/*.jpg && echo $#)
|
oder gleich
| set -- "${Path}"/*.jpg
for dateiname in "$@"
do
konvertier dir was mit "${datei}"
done
|
Bei der Methode ohne Subshell werden allerdings andere $1 $2 ... Argumente von set überschrieben.
Sinn: Da es viele Dateien sind wollte ich mit 2 Aufrufen (gerade / ungerade abarbeiten lassen und so die benötigte Zeit halbieren.
Schau dir mal parallel
bzw. xargs -P
an. Da lässt du das set --
einfach weg und rufst es mit deinscript datei1 datei2 datei3
auf. Und xargs erledigt die mehreren parallelen Aufrufe für dich.
Um bei deiner ursprünglichen for-Schleife zu bleiben kannst du das auch mit sem
machen (ein Shellscript-Helfer von parallel).
| Path="/home/Bilder"
for i in $Path/*.jpg
do
sem -j 2 convertieren
done
sem --wait
|