Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!
Shell script alapú házi
nyegota
kérdése
271
Sziasztok!
ismét az alábbi feladathoz szeretnék segítséget kérni (inkább komplett megoldást, ha lehetne):
1. HTML szintaktika ellenőrző
Írjon egy html-szintaktika ellenőrző programot, mely ellenőrzi a nyitó illetve záró TAG-eket. A program próbálja megállapítani a hiba helyét!
Ismerje a fontosabb TAG-eket, és ha hibás TAG-gel találkozik, kérdezze meg, hogy kijavítsa-e. Könnyen bővithető legyen új szintaktikai
elemekkel. Ellenőrizze az argumentumban megadott file nevét is, és hogy létező, olvasható text file-e. pl.:
$>htmlell file
Hianyzik a </html>
Atnevezzem-e file.html -re?
I/N
Ehhez a feladathoz az alábbi dolgok kellenének még:
"A program működése feleljen meg a UNIX alapelveinek, amit kell, azt csinálja megbízhatóan, minden sallang nélkül.
Ha nem tudja értelmezni argumentumait, akkor valami ehhez hasonló módon tájékoztasson:
$>ls -G
ls: Not a recognized flag: G
Usage: ls [-1ACFLNRabcdefgilmnopqrstux] [File...]
Minden feladatnak futnia kell UNIX alatt.
Használja a szabványos ki- és bemeneti fájlokat, a működésének ne legyenek mellékhatásai.
(pl. ne hagyjon maga után szemetet, stb.)
A programhoz szükséges minden inputot argumentumként adjon át,
és a program ellenőrizze is le az összes megadott argumentumot (darabszám, típus, stb.).
A programhoz írjon rövid helpet (hívható legyen a programnév –h kapcsolóval),
ami rövid tájékoztatást ad a működésről, a szükséges argumentumokról, kapcsolókról, azok típusáról, stb.
Használjon „beszédes” változóneveket és megfelelő kommentárral lássa el a programot.
(A megfelelő nem azt jelenti, hogy minden programsort 4 másikban magyaráz meg!)"
A segítséget előre is köszönöm!
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Felsőoktatás / Informatika
Válaszok
1
VF{ Informatikus }
válasza
A feladat azt kéri, hogy „minden inputot argumentumként adjon át”. Azokat vagy átadod a szkript indításakor vagy nem. A szkript futása közben már fölösleges kiírni, hogy „Adja meg a HTML fajl eleresi utjat”. Sőt, bármit fölösleges kiírni mielőtt a szkript ellenőrizte volna, hogy kapott vagy nem adatot.
Ez itt megtenné a feladatban kért és a logikus ellenőrzéseket, de a tidy futtatását rád bízom, mert ami példányt beszereztem, az nem működőkepés.
while getopts ':h' argumentum; do
case "$argumentum" in
'h')
segitseg
exit
;;
'?')
echo "HIBA: érvénytelen argumentum '$OPTARG'" >&2
segitseg
exit 1
;;
esac
done
shift $(( OPTIND - 1 ))
if (( $# == 0 )); then
echo "HIBA: hiányzó HTML fájl paraméter" >&2
exit 1
fi
if (( $# > 1 )); then
echo "HIBA: túl sok HTML fájl paraméter" >&2
exit 1
fi
htmlfajl="$1"
if [[ ! -e "$htmlfajl" ]]; then
echo "HIBA: a '$htmlfajl' fájl nem létezik" >&2
exit 1
fi
if [[ ! -f "$htmlfajl" ]]; then
echo "HIBA: a '$htmlfajl' fájl nem fájl" >&2
exit 1
fi
if [[ ! -r "$htmlfajl" ]]; then
echo "HIBA: a '$htmlfajl' fájl nem olvasható" >&2
exit 1
fi
tipus="$( file --brief --mime-type "$htmlfajl" )"
if [[ "$tipus" != 'text/html' ]]; then
echo "HIBA: a '$htmlfajl' fájl tartalma nem HTML" >&2
exit 1
fi
kiterjesztes="${htmlfajl##*.}"
if [[ "$kiterjesztes" != 'htm' && "$kiterjesztes" != 'html' ]]; then
ujnev="${htmlfajl%$kiterjesztes}html"
echo "FURCSA: a '$htmlfajl' fájl kiterjesztése nem '.html'"
if [[ -f "$ujnev" ]]; then
echo '(nem ajánlom fel, hogy átnevezzem, mert az új névvel már létezik fájl)'
else
read -p "Átnevezzem-e '$ujnev'-re? (I/n): " valasz
if [[ "$valasz" == 'i' || "$valasz" == 'I' ]]; then
if mv "$htmlfajl" "$ujnev"; then
htmlfajl="$ujnev"
else
echo "HIBA: a '$htmlfajl' fájl átnevezése sikertelen" >&2
fi
fi
fi
fi