Ich habe dieses Beispiel-Code:Vermeiden Subshell aus Rohr auf Schlag
find "$1" ! -regex "$regex" 2>/dev/null | while read line ; do
a="$line"
done
echo ("$a") # prints nothing because of subshell
ich brauche:
- Abhilfe für Subshell
$a
sichtbar außerhalb zu machen (in global scope) - nicht verwenden bash's process substitution
- Kompatibel mit Dash, Bash und Korn Shell
Wie kann ich das erreichen? Gibt es eine einfache Lösung?
Gibt es eine Möglichkeit, die Erstellung von Dateien zu vermeiden? Wir können keine temporären Dateien machen: S –
Angst nicht. Ihre einzige andere Möglichkeit besteht darin, den Aufruf von 'find' durch eine Shell-Funktion zu ersetzen (rekursiv, wenn Sie in Unterverzeichnisse absteigen müssen), die eine 'for'-Schleife verwendet, um alle Dateien in der aktuellen Verzeichnishierarchie zu durchlaufen. 'expr' kann verwendet werden, um jede Datei gegen den regulären Ausdruck zu prüfen, oder Sie können vielleicht mit einem Dateinamenmuster davonkommen, wenn die Regex nicht zu kompliziert ist. – chepner
Okay, naja, es funktioniert trotzdem einwandfrei, also Markierung als gelöst. Danke vielmals! :) –