CarstenHa schrieb:
ich brauche mal Eure Hilfe für ein tieferes Verständnis. Welches der folgenden Beispiele hat was für Vor- bzw. Nachteile beim Programmieren:
Zeile 2 funktioniert in jeder POSIX-Shell (also auch der sh
), während 5 und 8 Spezialitäten der bash
(und vielleicht noch anderer Shells wie der zsh
) sind. Vorteil von Zeile 8 ist, dass man damit die Ausgabe mehrerer Pipelines übergeben kann. Ich mache z.B. manchmal so etwas
| diff -U3 <(ein kommando | sort) <(ein anderes kommando | sort)
|
| # Pipe-Operator
echo "$var" | wc -l
# Here String
wc -l <<<"$var"
# Process Substitution
wc -l <(echo "$var")
|
Ich habe gelesen, das der Pipe-Operator einen neuen Prozess erzeugt, was der Here-String nicht macht. Gibt es da evtl. Unterschiede in der Performance?
Für die Process Substitution kannst Du leicht sehen, dass eine Pipe erzeugt wird, wenn Du anstatt wc
mal stat
einsetzt. Bei stat - <<<"123"
sieht man, dass Stdin eine reguläre Datei ist.