( locsemege | 2013. 06. 01., szo – 14:10 )

Persze, hogy nem minden szónak kell egy tömbelemnek lennie. A példában gondolom látszott, hogy egy-egy változót egy-egy echo paranccsal írtam a tömbbe, ahol a változó értéke tartalmazhat szóközt is. Éppen ezért írtam a $REPLY köré aposztrofokat. Az eval-t pedig éppen arra használtam, hogy az első alkalommal generálom a stringet:

a=('value 0'
'value 1'
'value 2'
)

A value n értékek jelen példámban a $REPLY változóból kerülnek a stringbe. Erre ráengedve az eval-t, a shell ezt megkapja értelmezésre, s így definiálásra kerül egy tömb, melynek elemei aposztrofok által határolt értékek, s éppen ezért szóköz, tabulátor, newline mentén nem esik szét az érték.

Nem tudom, az IFS átdefiniálása mennyivel egyszerűbb, nekem nem tűnik annak az eval-lal szemben. Ugyanakkor töredelmesen bevallom, hogy azért sem szoktam hozzányúlni, mert nem tudom, pontosan mire is vonatkozik az IFS. Kipróbáltam, magára a scriptre, tehát arra, hogy az interpreter felolvassa a scriptet, nincs hatással. Ezek szerint a read-re vonatkozik.

Ugyanakkor én pipe-ból való változó kihozására írtam általános példát, arról szó sincs, hogy szóközt tartalmazó változó read által keletkezik, lehet az úgy is, hogy pipe-ból read-del olvassuk a sort, majd valamilyen algoritmussal előállítunk egy változót, amelyik szóközt tartalmaz.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE