Ausgabe des Suchbefehls in Variable speichern

Ausgabe des Suchbefehls in Variable speichern

Ich versuche, die Find-Ausgabe folgendermaßen in einer Variablen zu speichern:

a=find /Users/Downloads/DTI_allsites/subprojects/*/UII_0077 -name "dti_preprocessed" -type d

Ich erhalte jedoch ständig die folgende Meldung:

-bash:

/Users/Downloads/DTI_allsites/subprojects/UII_B/UII_0077: ist ein Verzeichnis

immer wenn ich versuche, den Befehl zu verwenden, gebe ich den Pfad mit folgendem Befehl wieder: echo $a

Ich bekomme nichts in der Variable gespeichert. Wie kann ich das beheben?

Antwort1

Da findeine Liste von Dateipfaden zurückgegeben wird, sollten Sie eine Array-Variable verwenden. Da ein Dateipfad jedes beliebige Zeichen außer NUL enthalten kann, sollten Sie -print0das Ergebnis verwenden und auf NUL aufteilen.

Mit bash4.4+:

readarray -td '' list < <(find ... -print0)

so-something-with "${list[@]}"

verwandte Informationen