Hallo Yves, * Yves schrieb:
wie bringe ich find dazu, die funktion convert für jede datei auszuführen?
#!/bin/bash
function convert () { FILE=$1 echo "copy: $FILE" }
find "$*" -type f -exec convert {} \;
find läuft in einem Kindprozess des Scriptes, dort gibt es aber die Funktion convert() nicht. Warum erzeugst du nicht erst das Ergebnis der Suche mit find und schmeisst das Suchergebnis dann der Funktion convert() vor? Problematisch finde ich übrigends auch das find-Konstrukt. "$*" übergibt sämtliche Parameter als ein String, während $@ die Parameter als einzelne Worte übergibt. Die Anführungszeichen müssen um $@ herum, damit's auch bei Namen mit Leerzeichen funktioniert. convert() { echo "copy: $1" } for i in `find "$@" -type f -print`; do convert $i done $1 in der Funktionsdeklaration ist übrigends der erste Parameter, der der Funktion übergeben wurde, nicht der erste Parameter, der dem Script übergeben wurde. Man kann also innerhalb der Funktion ruhig den Inhalt von $1 verändern, ausserhalb der Funktion gelten weiterhin die Positionsparameter, die dem Script übergeben wurden. Was genau hast du denn eigentlich mit dem Script vor? Warum suchst du mit find nach einer Datei, die sowieso im aktuellen Verzeichnis liegen muss, weil der find-Aufruf sonst nicht funktioniert? Gruß christian -- "Anstatt zu lachen bei einem Witz sagtst Du: ROTFL" Zu lange im Internet 4