VARIABLE="foo-bar-baz"
OLDIFS="$IFS"
IFS="-"
set -- $VARIABLE
PART1="$1"
PART2="$2"
PART3="$3"
IFS="$OLDIFS"
Und warum? Weil die erste Lösung für jede Variablenzuweisung zweimal (dreimal, wenn „echo” kein Builtin ist) fork(2)'en und je eine Pipe aufmachen muß. Und jetzt stellt Euch das mal in einer Schleife vor, die 1000mal durchlaufen wird.
Nach soviel Hirnakrobatik am Morgen ist es Zeit für etwas Sport:
Update: Danke an Daniel fürs Gegenlesen. Ich sollte vor der ersten Tasse Kaffee nicht bloggen. Oder wenigstens nach selbiger Tasse selbst nochmal durchlesen, was ich da verbrochen habe Wie auch immer, der eigentliche Punkt bleibt bestehen: Ein einzelnes fork(2) ist billig, ein paar 1000 sind es nicht.