View Full Version : Here Document.
w.tommasi
19-02-2006, 17:49
Ciao ragazzi !
Prendendo come esempio questo (http://72.14.207.104/search?q=cache:R6Uw-yl_EC4J:www.di.unipi.it/~susanna/LCS/03lcs_bash2.0.pdf+here+document+unix&hl=it&gl=it&ct=clnk&cd=9&lr=lang_it), qualche anima pia mi dice qualcosa in più su questa tecnica ?
Perchè si usa ?
;)
w.tommasi
19-02-2006, 23:05
Uppete !
;)
ilsensine
20-02-2006, 09:50
Una domanda in forma un pò meno criptica...? ;)
w.tommasi
20-02-2006, 10:02
Ma come siamo nella parte del forum dedicata a Unix, Linux & Co. e tu mi stai dicendo che non sai cosa è la "here document" ?!?!?!? :eek:
Ho pure postato un link che fa capire di cosa sto parlando ... :rolleyes:
Cmq x farla breve si tratta di quella tecnica che alla fine del comando piazza un bel << EOF x esempio ....
;)
ilsensine
20-02-2006, 10:05
Ma come siamo nella parte del forum dedicata a Unix, Linux & Co. e tu mi stai dicendo che non sai cosa è la "here document" ?!?!?!? :eek:
Ah è il semplice pipe di reindirizzamento. Mai sentito chiamare "here document".
Esiste anche nell'interprete cmd.exe di windows; cosa non ti è chiaro?
w.tommasi
20-02-2006, 10:49
Guarda da pagina 80 del link ke ho postato io ... mi spiegherest cosa succede ?
DENGHIU !
;)
ilsensine
20-02-2006, 11:49
Abbastanza semplice.
Saprai che molti comandi da console sono "interattivi"...possono leggere da stdin (normalmente un "terminale" foraggiato dalla tastiera) e scrivono su stdout (in genere un terminale connesso alla console che visualizza i dati).
In quell'esempio si affronta questo problema: se uso un programma che legge quello che sto scrivendo, come faccio a dirgli "ho finito di scrivere"? Un modo, se supportato dal terminale in uso, è usare la combinazione ctrl+d, ma non è sempre possibile. Un modo alternativo è quello illustrato nell'esempio, ovvero utilizzando il formalismo "<< [separatore]". Senza entrare nei dettagli di quello che succede, usando questa forma si può scrivere un testo qualsiasi e segnalare con il separatore indicato quando si ha intenzione di terminare. Il testo scritto, escluso il separatore, verrà passato in ingresso al programma.
Se hai una macchina unix a disposizione puoi fare questa semplice prova:
esegui
gzip << EOF > prova.gz
Comparirà il simbolo ">", dove potrai scrivere qualcosa. Scrivi ad esempio:
> testo
> di
> prova
> EOF
Una volta scritto EOF, il testo viene passato al programma gzip, che lo comprimerà e lo scriverà nel file prova.gz (come gli ho indicato tramite "> prova.gz"). Eseguendo quindi
zcat prova.gz
puoi leggere il contenuto decompresso del file, e dovresti ottenere:
testo
di
prova
Nota che la scritta EOF che ho usato è puramente arbitraria, puoi utilizzare qualsiasi parola di separazione preferisci (come << ENDOFTEXT ecc.)
w.tommasi
20-02-2006, 14:17
Ahhhhhhhhhhhh adesso mi è più chiaro !
Quindi nell'esempio fatto da te gzip parte ma attende di effettuare la compressione fino a che non trova la parola "EOF", come nell'esempiopostato da me la nail.sh include nel corpo della mail tutto ciò che precede parola ENDMAIL ... giusto ?
DENGHIU !
;)
w.tommasi
21-02-2006, 21:18
Ho capito bene ?
E' così ?
;)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.