- Registriert
- 01.05.14
- Beiträge
- 1
Hallo,
ich finde keine Lösung für folgendes Problem:
Mit jedem von find gefundenen Element (Datei, Verzeichnis, ...) soll eine Funktion aufgerufen werden, in der mehrere (globale) Variablen geändert werden und deren Werte dann auch global abrufbar sind. Mein nicht funktionierendes Minimalbeispiel:
--------------------------------------------------
#!/bin/bash
typeset -i var1=0
var2=""
function myfunc {
let var1=$var1+1
let var2=$1
echo $var1 $var2 $1
}
export -f myfunc
find . -exec myfunc '{}' \;
echo $var1 $var2
--------------------------------------------------
$var1 soll in dem Beispiel zählen, wie oft myfunc aufgerufen wurde.
$var2 soll das Argument des letzten Aufrufs zurück geben.
In meiner tatsächlichen Anwendung sieht myfunc natürlich viel aufwändiger aus. Aus diesem Grund hilft mir nicht, die Anzahl der Aufrufe über wc oder andere bereits vorhandene Zählfunktionen zu bekommen.
Was noch wichtig wäre: Das Skript soll später auf sehr sehr große Verzeichnisbäume losgelassen werden. Aus diesem Grund sollte jedes von find gefundene Element sofort zum Aufruf meiner Funktion führen und nicht erst das gesamte Ergebnis von find abgewartet werden. So kann ich nämlich Statusmeldungen ausgeben und warte nicht ewig, ohne dass irgendetwas passiert.
Hat jemand eine Lösung parat?
Besten Dank & viele Grüße,
Dolon
ich finde keine Lösung für folgendes Problem:
Mit jedem von find gefundenen Element (Datei, Verzeichnis, ...) soll eine Funktion aufgerufen werden, in der mehrere (globale) Variablen geändert werden und deren Werte dann auch global abrufbar sind. Mein nicht funktionierendes Minimalbeispiel:
--------------------------------------------------
#!/bin/bash
typeset -i var1=0
var2=""
function myfunc {
let var1=$var1+1
let var2=$1
echo $var1 $var2 $1
}
export -f myfunc
find . -exec myfunc '{}' \;
echo $var1 $var2
--------------------------------------------------
$var1 soll in dem Beispiel zählen, wie oft myfunc aufgerufen wurde.
$var2 soll das Argument des letzten Aufrufs zurück geben.
In meiner tatsächlichen Anwendung sieht myfunc natürlich viel aufwändiger aus. Aus diesem Grund hilft mir nicht, die Anzahl der Aufrufe über wc oder andere bereits vorhandene Zählfunktionen zu bekommen.
Was noch wichtig wäre: Das Skript soll später auf sehr sehr große Verzeichnisbäume losgelassen werden. Aus diesem Grund sollte jedes von find gefundene Element sofort zum Aufruf meiner Funktion führen und nicht erst das gesamte Ergebnis von find abgewartet werden. So kann ich nämlich Statusmeldungen ausgeben und warte nicht ewig, ohne dass irgendetwas passiert.
Hat jemand eine Lösung parat?
Besten Dank & viele Grüße,
Dolon