Amit te írtál, így egy fork bomba, már feltéve, hogy ott a zárójel. Ha nincs ott a zárójel, úgy csak egy sima memory leak. :) Mert néha vissza is kellene térni. Nekem épp azért kellett a subshell, hogy ne az éppen aktuális változóim íródjanak felül, hanem egy új memóriaterületen legyen foglalva az újabb copy hívás változóterülete. Ez épp azért kell, hogy visszatérés után a hívó copy ott folytathassa, ahol abbahagyta.
A scriptem működik jól. Nem ezzel van a bajom, hanem azzal, hogy amennyiben átirányításon belül - legyen az pipe, process substitution, vagy here string - történik a rekurzív hívás, úgy visszatérés után a hívó függvény is visszatér, nem dolgozza fel a lista még fennmaradó elemeit. Tehát vagy ugyanazt a memóriát használják átirányításkor, vagy a subshellben nem keletkezik valamiféle másodpéldány abból a változóból, amely a read EOF státuszát tárolja, vagy valami ilyesmi. Ehhez kellene például egy hozzáértő Zahy. ;)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE