Beágyazott input (here documents)

Az átirányításoknak egy speciális fajtája az úgynevezett here documents, amit jobb híján beágyazott input néven fogunk emlegetni. E különleges mechanizmus megadását a következő példán szemléltetjük:

$ ed semmi <<vege

1,\$p

1,\$s/\^/\* /

1,\$p

w

q

vege

96

*****

Ez semmi

***** *****

alma

korte

repa

retek

alma

mogyoro

alma

barack

korte

mogyoro

narancs

* *****

124

$

A fenti példában a << jel azt jelzi, hogy a behívott program, jelen esetben az ed, inputját a shell-től veszi, mégpedig addig, amíg egy olyan sorral nem találkozik, amelyik a sor elején a << jel után szerepelt mintát (esetünkben a vege szócskát), és csak azt tartalmazza. Ez a minta természetesen tetszőleges lehet. A fenti példában a semmi nevű állományt editáltuk meg úgy, hogy először az egészet kiírattuk, majd az egész állományban a sorkezdetekre beillesztettünk egy csillag és egy szóköz karaktert.

$ cat semmi

* *****

* Ez semmi

* ***** *****

* alma

* korte

* repa

* retek

* alma

* mogyoro

* alma

* barack

* korte

* mogyoro

* narancs

$

E módszer terminálról közvetlenül begépelt shell parancsok esetében is használható, de igazi jelentősége shellscript-ekben van, ahol előre megírt parancsszekvenciákat tudunk átadni olyan programoknak, amelyek bemenetüket a standard inputról veszik, s valamilyen ok miatt nincs lehetőség a standard input átirányítására.

 

Tartalomjegyzék