Here documents
Ukoliko od prije niste čuli za "Here documents", s pravom se možete upitati čemu što se tako čudno zove uopće može služiti. Riječ je, pojednostavljeno rečeno, o načinu kako običan tekst ubaciti unutar programskog koda, a pri tome se može sačuvati i formatiranje i izvršiti supstitucija varijabli. Here documents se rabe u programiranju u Unix shellu, Perlu, PHP-u, Windows PowerShellu i mnogim drugim jezicima. Kako je najlakše ovaj princip pokazati na primjeru, idemo odmah s jednim jednostavnim primjerom:
#!/bin/sh
datum=`date +"%d.%m.%Y."`
cat <<END
Poštovani korisniče,
danas je $datum, što je krajnji rok
da obnovite svoj status na ustanovi
i zadržite svoj korisnički račun.
Zahvaljujemo,
IT team
END
Ovaj primjer je pisan u Bash shellu, te će izvršavanje ove skripte ispisati ovakav ispis:
Poštovani korisniče,
danas je 15.10.2010., što je krajnji rok
da obnovite svoj status na ustanovi
i zadržite svoj korisnički račun.
Zahvaljujemo,
IT team
Umjesto naredbe cat, koja ovdje služi samo kao primjer, možete rabiti mail, write ili bilo koju drugu naredbu koja očekuje ulaz sa tipkovnice. Ovaj primjer je koristan za obavještavanje studenata (obično ćemo to činiti iz crona) da će im na određeni datum isteći korisnički račun ukoliko ne donesu potvrdu o upisu godine (u ovisnosti o politici na vašoj instituciji). No, vratimo se samom primjeru.
Znak "<<END" je oznaka gdje počinje tekst kojeg ne treba interpretirati kao naredbe, nego kao obični tekst. No, ipak se vrši substitucija varijabli pa možete rabiti varijable koje ste definirali u samoj skripti ili pak vanjske varijable iz okoliša (environmenta) skripte. Oznaka kraja teksta je ista riječ, samo bez znakova "<<"
Valja napomenuti da riječ ne mora biti "END", može biti bilo koja jedinstvena riječ, a najčešće se rabi "EOF", "END" ili kod nas "KRAJ" i slično. Jedna važna stvar, ukoliko oznaku početka Here documenta stavite u navodnike (bilo dvostruke, bilo jednostruke!), substitucija varijabli se neće obaviti (primjerice, cat <<"END" ili cat <<'END'):
Postovani korisnice,
danas je $datum, što je krajnji rok
da obnovite svoj status na ustanovi
i zadržite svoj korisnički račun.
Zahvaljujemo,
IT team
I drugi programski jezici podržavaju Here documents. Evo primjera za programski jezik Perl:
#!/usr/bin/perl -w
my $posiljatelj = "Sistem administrator";
my $primatelj = "Pero Peric";
print <<"END";
Dragi korisnice $primatelj,
Prekoracili ste diskovnu kvotu koja Vam je dodijeljenja.
Molimo da najhitnije obrisete visak datoteka iz Vaseg direktorija.
$posiljatelj
END
Dakle, uporaba je slična. Bitna razlika je da ukoliko stavite jednostruke navodnike, substitucija varijabli se neće obaviti (pisat će $posiljatelj i $primatelj).
Za popularni skriptni jezik PHP situacija je nešto drugačija, a i "<<" se mijenja u "<<<":
<?php
$adresa = "root@domena.hr <Sistem administrator>";
$primatelj = "Pero Peric";
echo <<<END
Vasa zaporka je stara preko 2 godine. Molimo, promijenite je odmah.
Ukoliko trebate pomoc, obratite se Vasem sistem administratoru na adresu $adresa.
END;
?>
Također, moguće je cijelu konstrukciju dodijeliti varijabli, preko oblika "$varijabla = <<<EOF". Dalje s varijablom možete činiti što vam je volja.
Nadamo se da su primjeri bilo dovoljno jasni te da smo vam uspjeli razjasniti čemu Here documents služe, te da ćete ih moći ubuduće samostalno rabiti.
KEYWORDS: heredoc here doc documents
- Inačica za ispis
- Logirajte se za dodavanje komentara
- PDF version