3AHITS-SYTB-Schauer-Alexander

Arbeitsbericht

Übersicht

Erklärung Exit Status und test Kommando

https://www.franzmatejka.at/htl/doc/SYTB_3/12_test.html

Zusammenfassung Exit Status

Zusammenfassung Test

Syntax:

test 'xyz' = 'xyz'
echo $?

Syntax:

# Leerzeichen neben den [ ] !
[ 'xyz' = 'xyz' ]
echo $?

Beispiel:

# 100 > 99:
test 100 -gt 99 && echo "Yes, that's true."

# Output: Yes, that's true.

Kombination von && und || auch möglich:

test 100 -gt 99 && echo "Yes, that's true." || echo "No, that's false."

# Output: Yes, that's true.

Operator Cheatsheet:

alt text

Übung (Datei zu groß)

Angabe:

Schreibe ein Skript mit einer Datei als Argument, es soll der Text Datei ist zu groß ausgegeben werden wenn die Datei mehr als 100 Bytes hat. Die Dateigröße kann mit ls -l und anschließendes cut ermittelt werden.

V1.1: Wenn die Datei nicht mehr als 100 Bytes hat soll der Text Größe OK ausgegeben werden.

Lösung:

test $(ls -l $1 | cut -d " " -f5) -lt 100 && echo "Größe OK" || echo "Datei ist zu groß"

Erklärung:

Output:

┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ./checkSize.sh checkSize.sh
Größe OK
                   
┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ./checkSize.sh ../3AHITS-SYTB-Schauer-Alexander/260428/image.png
Datei ist zu groß

Übung (Dir Creator)

Angabe:

Schreibe ein Skript das den Namen eines Verzeichnisses übergeben bekommt. Das Verzeichnis soll angelegt werden wenn dieses noch nicht existiert. Wenn es das Verzeichnis schon gibt soll eine Warnung und der Inhalt des Verzeichnis angezeigt werden.

Lösung:

# ! zum negaten
test ! -d $1 && mkdir $1 || echo "Verzeichnis existiert schon"; ls $1

Erklärung:

Output:

┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ./dirCreator.sh . 
Verzeichnis existiert schon
checkSize.sh  dirCreator.sh

┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ./dirCreator.sh ./abc
    
┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ls
abc  checkSize.sh  dirCreator.sh

Übung (Stundenplan)

Angabe:

Schreibe ein Bash Script das für den aktuellen Wochentag eine Kurzform des Stundenplans ausgibt:

$ ./splan.sh
Es ist Donnerstag
  AM SYTB SYTB frei MEDT MEDT BESP BESP

Hinweis: Mit date den aktuellen Wochentag ermitteln.

Lösung:

tag=$(date +%u)

echo -n "Es ist "

test $tag = 1 && echo "Montag" && echo "GGP-w SEW SEW SEW ITP2MG frei INSY/ITSE INSY/ITSE"
test $tag = 2 && echo "Dienstag" && echo "SYTB SYTB ITP2PM E1 ITSE SYTB"
test $tag = 3 && echo "Mittwoch" && echo "D AM NWT1 NWT1 RK E1 frei SYTB GGP-w AM"
test $tag = 4 && echo "Donnerstag"&& echo "NW2-p AM SYTE ITP2PM BESP BESP"
test $tag = 5 && echo "Freitag" && echo "MEDT ITP2A RK ITSE MEDT/SYTE MEDT/SYTE"
test $tag = 6 && echo "Samstag" && echo "frei"
test $tag = 7 && echo "Sonntag" && echo "frei"

Erklärung:

Output:

┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ./stundenplan.sh   
Es ist Dienstag
SYTB SYTB ITP2PM E1 ITSE SYTB

Übung (HTML Generator)

Angabe:

Erstelle ein Skript das ein Markdown Dokument nach HTML konvertiert:

$ ./md2html test.md test.html

Verwende pandoc zum konvertieren.

Dabei soll aber nur dann konvertiert werden wenn dies wirklich notwendig ist, d.h. die html Zieldatei entweder nicht existiert oder älter ist als die Quelldatei, denn wenn sich die Quelldatei nicht geändert hat ist das konvertieren auch nicht notwendig.

Lösung:

# sudo apt-get install pandoc 
# pandoc muss installiert sein

quell=$1
ziel=$2

(test ! -e $ziel || test $ziel -ot $quell) && pandoc -o $ziel $quell; echo "konvertiert"

Erklärung:

Output:

┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ls
abc  checkSize.sh  dirCreator.sh  md2html.sh  stundenplan.sh  test.md

┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ./md2html.sh test.md test.html
konvertiert

┌──(kali㉿kali)-[~/SYTB/260428]
└─$ ls
abc  checkSize.sh  dirCreator.sh  md2html.sh  stundenplan.sh  test.html  test.md

┌──(kali㉿kali)-[~/SYTB/260428]
└─$ cat test.html
<h1 id="header">Header</h1>
<p>Paragraph</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> apt-get install pandoc</span></code></pre></div>

Nicht erledigt

Diese Übung ist sich nicht mehr ausgegangen.