Hmm.
code:
1
2
3
| if [ -r blaat ]; then
. filename
fi |
If checkt welke exit status -r blaat teruggeeft. Het is eigenlijk niet echt gebruikelijk in die vorm dacht ik, althans niet als -r voor blaat staat. Daarachter is het een parameter voor het commando 'blaat'.
Gaan we even hiervan uit:
if blaat -r; do enz.
blaat -r geeft of een 0 of een 1 als exitstatus terug, 0 is 'deed het' 1 is 'deed het niet, kwam met een error', als de exit status van blaat -r 0 is wordt het deel binnen de loop uiotgevoerd, er wordt dus een programma (filename zal wel een executable of een shellscript zijn) aangeroepen en uitgevoerd. (De punt ervoor betekent volgens mij dat geen subshell gestart wordt, is handig als je in dat shellscript vars uit het 'parent script' wilt kunnen gebruiken.)
code:
1
| dig @rs.internic.net . ns >root.hints.new 2>&1 |
dit voert de uitvoer van het commando dig @rs.internic.net . ns (

) aan een file root.hints.new. ( '>' maakt de file leeg en schrijft het erin, '>>' hangt het eronder).
Er wordt onderscheid gemaakt tussen standardin (STDIN / 1) en standard error (STDERR / 2). STDIN en STDERR worden normaalgesproken allebei naar je scherm geprint. Errors en warning gaan naar STDERR, gewone messages (print bijvoorbeeld in een shell script) naar STDIN. 2>&1 betekent nu dat 2 naar 1 wordt geschreven, dus in jouw geval komt STDERR ook in dat bestandje te staan.
Dit zal allemaal niet bijster correct zijn, als ik grondleggende dingen mis heb hoor ik het natuurlijk graag. Maar nu heb je tenminste wat betere termen om op te zoeken. Ik kan kan je trouwens learning the bash shell van o'reilly aanraden, handig boekje. Je zult snel merken hoe verrekte handig wat bash kennis is. Bovendien is bash vrij laagdrempelijk en krachtig. Rondom goede zaak om hier wat over te leren dus.
Everyone complains of his memory, no one of his judgement.