bash szkript: fájlból változók elérése

Sziasztok!

Kezdő vagyok még, így sokat keresgéltem a megoldás után, de nem találtam semmit.
egy txt fájlban soronként van eltárolva, hogy mit szeretnék másolni és hova.
Például:
innen1 ide1 fájl1
innen2 ide2 fájl2
innen3 ide3 fájl3
stb...
S ezt a txt fájlt szeretném egy bash scripttel feldolgozni.
Valahogy úgy képzelem el, hogy soronként kiveszi a szavakat, berakja változóba, s utána ezek segítségével meghívni az rsyncet.
De nem vagyok ebben biztos..

Tudtok segíteni, hogy milyen ciklussal kellene elérni ezeket a változókat?

Bármilyen ötletnek örülök.

Hozzászólások

Valami ilyen kell neked...
Hibaellenőrzés nincs benne!!!

cat todo.txt | while read honnan hova fajl
do
cp $honnan/$fajl $hova
done

--
Debian Linux rulez... :D

Az ilyesmi okosságokat sokszor úgy szoktam, hogy először kiíratom, hogy mit csinálna:

awk '{print "mv " $1 "/" $2 " " $3}'

Ha ez ránézésre stimmel, akkor egy | sh-val megtoldom.

Valamint lehet beleépíteni a spéci karakterek eltakarását is, nehogy legyen benne egy kis ` :-) (Az ilyen szövegfájlokat tipikusan generáltatják, a könyvtárstruktúrából programokkal, márpedig a felhasználónak megtiltani nem lehet, hogy `anyád` nevű fájlt hozzon létre. És mihelyt anyád helyett valami hasznosabb van benne, akkor lehet szívni az eval-lal.

A path listát soha nem kezelem szkriptben. Ha körbebástyázod mindenfél idézőjellel meg bekkszlessel, akkor is jöhet egy újabb függvényhívás ahol csak elszúrtad. ;)
A megoldás pl. awk, sed, c, stb soronként feldolgozva. Ekkor a bináris kezelés miatt mindegy a tartalma.
Gondolok itt arra, hogy pl. egy gets()+stat() soha nem igényel idézőjelet - még utf-8 esetén sem. :)

[Agresszív Kismalac mód on]
Nem próbálom!
Először gondolkodni szoktam!
[Agresszív Kismalac mód off]
Van olyan, hogy ARG_MAX meg ennek maximális mérete. Ezen kívül pont annyi, amennyinek a kezelésére az adott programot felkészítették. Pl. az awk is rendelkezik maximális mezőszámmal és mezőmérettel. Ezeket érdemes elolvasni. Most éppen egy 2021000 elemű file listával dolgozom, de semmi ilyen hibaüzenetet nem kaptam...

Láttam a fícsőrt a local_limits.h-ban. Ez olyan windows-developer szemlélet: a maximális string mérete = a diszk méretével. Régebben olyan rendszeren dolgoztam (AIX), ahol 2000 volt ez az érték - ha az adott program fekészült rá. Pontosan az utóbbiért - hiszem, ha látom alapon - csak belátható és kis számosságú paramétert használok. Kicsi a monitorom! ;)

Emlékeim szerint az AIX-on hajdan rebootot igényelt a megváltoztatása, és azért az mégis egy kapjákmárbe helyzet volt.

Hálistennek azért ma már nem használhatatlanul konzervatív az alapértelmezett érték, és röptében változtatható, de azért az a végső maximumnak meghatározott 4M nem egy teljesíthetetlen mennyiség - aminek persze jótékony pedagógiai hatása van a globbing-find-xargs háromság szempontjából.