Wie übergebe ich Dateinamen als Variablen an ein ausführbares Programm?

Wie übergebe ich Dateinamen als Variablen an ein ausführbares Programm?

Dies sollte eine relativ einfache Frage sein. Ich versuche, mehrere Dateien in einer Schleife durch ein ausführbares Programm zu leiten. Ich habe mehrere Strategien ausprobiert (Speichern in einem Array usw.), aber der Dateiname scheint nicht als Variable erkannt zu werden. Der Fehler, den ich erhalte, ist: Keine solche Datei oder kein solches Verzeichnis.

Der Umriss meines letzten Versuchs:

FILES=path/*/*

for f in $FILES
do
./function -input $f 
done

Ich arbeite in einer Bash-Shell.

Antwort1

Anstatt eine einfache Variable zum Speichern einer Glob-Erweiterungssequenz zu verwenden, empfehlen wir die Verwendung eines richtigen Arrays und die Aktivierung der Shell-Globbing-Option, globstarum Dateien in allen Unterverzeichnissen zu füllen

shopt -s globstar nullglob
file_list=(path/**/*)

und verwenden Sie eine Schleife über das Array, um jede Datei zu verarbeiten

for file in "${file_list[@]}"; do
    printf '%s\n' "$file"
    # Your other actions on file goes here
done

verwandte Informationen