User:Ulaaneot: Difference between revisions
From ICO wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
== Quest 26 == | |||
Kirjutada skript, mis otsib üles kõik .html failid ning kirjutab iga faili html dokumendi pealkirja failid.html faili. Loodud html fail (failid.html) peab sisaldama .html faile linkidena, ehk sinna klikates suunab asukohta, kus fail asub. | |||
== Lahendus 1 (arvestamiseks) == | == Lahendus 1 (arvestamiseks) == | ||
Revision as of 16:08, 27 May 2011
Quest 26
Kirjutada skript, mis otsib üles kõik .html failid ning kirjutab iga faili html dokumendi pealkirja failid.html faili. Loodud html fail (failid.html) peab sisaldama .html faile linkidena, ehk sinna klikates suunab asukohta, kus fail asub.
Lahendus 1 (arvestamiseks)
Versioon 1.0
Bash Quest oli koostatud vigaselt, sest .html faili esimesel real on tavaliselt <html> blokk.
Siiski on Questi esialgne lahendus kontrollitud ja töötab:
#!/bin/bash
# Autor: Urmo Laaneots
# Versioon: 1.0
# Skript otsib üles kõik .html failid ja kirjutab faili esimese rea ja aadressi faili failid.html.
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
# Loome html faili alguse vastavalt W3 standarditele ja kirjutame selle faili
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<title>.html failid</title>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />
</head>
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
files=( `find / -type f -name "*.html"` )
# Tsükkel, mis käib kõik massiivi liikmed läbi
for (( c=1; c<${#files[@]}; c++ )); do
# Loeme failide esimese rea ja paneme selle muutujasse
FIRSTLINE=`head -n 1 ${files[$c]}`
# Kirjutame faili esimese rea .html faili
echo "Faili esimene rida: <textarea>$FIRSTLINE</textarea><br />" >> $FILENAME
# Kirjutame faili aadressi .html faili
echo "Faili asukoht: <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
# Lõpetame .html faili
echo "</body>
</html>" >> $FILENAME
# Teavitame kasutajat scripti töö lõpetamisest
echo "Done!"
Bash Questi õige lahendus
Questi lahendus, mis vastab Margus Ernitsa poolt parandatud questile.
Script kirjutab <title></title> blokkide vahele jääva info .html faili.
#!/bin/bash
# Autor: Urmo Laaneots
# Versioon: 2.0
# Quest 26
# Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html.
echo "Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html"
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
# Loome html faili alguse vastavalt W3 standarditele ja kirjutame selle faili
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<title>.html failid</title>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />
</head>
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
files=( `find / -type f -name "*.html"` )
# Tsükkel, mis käib kõik massiivi liikmed läbi
for (( c=1; c<${#files[@]}; c++ )); do
# Loeme failide <title> bloki ja valime seal ainult pealkirja ning paneme selle muutujasse
TITLE=`grep -i "<title>" ${files[$c]} | cut -f 2 -d ">" | cut -f 1 -d "<"`
# Kirjutame faili pealkirja .html faili
echo "<i>Faili pealkiri:</i> <b>$TITLE</b><br />" >> $FILENAME
# Kirjutame faili aadressi .html faili
echo "<i>Faili asukoht:</i> <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
# Lõpetame .html faili
echo "</body>
</html>" >> $FILENAME
# Teavitame kasutajat scripti töö lõpetamisest
echo "Done!"