Még mindig nem értek egyet.
a=(`ls -l`)
eval a=(`ls -l`)
nekem tök ugyanazt az eredményt adja(*), megfejelve azzal, hogy ha az ls kimenetében lennének spéci karakterek, akkor az általam javasolt evaltalan formában megmaradnának a tömbváltozó valamely elemének értékeként, míg eval esetén számíthatsz egy további feldolgozásra. (Azt meg nem látom, hogy az én ls-példám, és a te sokkal bonyolultabb parancsod között az adott esetben mitől lenne különbség.) Elvben meggyőzhető vagyok, de a fenti okfejtésed nekem nem OK.
(*) azaz a és aa nem egy string értékű változó, hanem egy tömbváltozó egymillió elemmel.
Szerk: szerintem akkor lenne igazad a sztringben, ha a zárójelek el lennének takarva.