Quiz: Bash‑ und Shell‑Meisterschaft
Kannst du mit Computern reden? So etwa?
Testen Sie Ihre Bash‑Skript‑Kenntnisse mit diesen 16 Fragen!
Variablen, Schleifen, Bedingungen, Zeichenkettenmanipulation, Funktionen und von einfach bis knifflig auftretende Syntax‑Fallstricke.
Schärfen (oder beweisen) Sie Ihre Shell‑Skript‑Fähigkeiten!
Wie werden Variablen in Bash definiert?
Variablen in Bash werden ohne Leerzeichen um das =‑Zeichen deklariert. Zum Beispiel:
name=AliceDies weist der Variable name den Wert "Alice" zu.
Hinweis: $name wird verwendet, um den Wert einer Variable referenzieren oder zu lesen.
Leerzeichen führen dazu, dass die Shell den Befehl als auszuführendes Programm interpretiert, was beim Setzen einer Variable nicht gewünscht ist.
Außerdem ist Bash case‑sensitive, daher sind name, NAME und Name unterschiedliche Variablen.
Schließlich dürfen Variablennamen keine Leerzeichen oder Bindestriche (-) enthalten. Verwenden Sie Unterstriche (_) oder camelCase stattdessen.
Was wird It's 🔨 Time! ausgeben?
Ich weiß. Es ist verrückt, wie schnell Escaping Strings schwer lesbar macht. Stell dir vor, du musst andere Sprachen in Bash-Strings escapen – mit all den Anführungszeichen, Apostrophen und $‑Symbolen, die dich verarschen. 🫠
Innerhalb einfacher Anführungszeichen ist kein Escaping möglich. Schließe zuerst den String, schreibe außerhalb davon ein maskiertes Apostroph und öffne anschließend den String erneut. Die Sequenz Schließen‑Quote, escaped‑Quote, Wieder‑öffnen‑Quote ('\'') ermöglicht die Ausgabe von:
It's 🔨 Time!Es gibt andere Wege, das zu lösen, aber das ist der gängigste.
Was wird das jetzt ausgeben?
price="$100"echo "Cost: $price"Nummerierte Variablen haben eine besondere Bedeutung. In diesem Fall ist $1 eine Spezialvariable, die das erste an das Skript oder die Funktion übergebene Argument enthält.
Da wir das Skript in einem REPL ausführen, gibt es keine Argumente, sodass $1 leer ist. Der restliche Text 00 wird unverändert ausgegeben.
Um ein wörtliches $‑Zeichen auszugeben, verwendet man einfache Anführungszeichen oder escaped es mit einem Backslash (\\):
price="\$100"echo "Cost: $price"Wie kann man die Länge einer Variable in Bash erhalten?
Die ${#username}‑Syntax gibt die Länge von username zurück.
Zum Beispiel:
username="@justsml"echo ${#username} # => 8Obwohl wc funktionieren würde, ist es technisch gesehen kein Teil von Bash.
Das Dienstprogramm wc ist ein alter Insider‑Witz, der sich auf „water closet“ bzw. Toilette bezieht.
SPASS BEISEITE! Liest das überhaupt jemand?
In Wirklichkeit ist wc ein uralter Befehl aus POSIX (und den AT&T‑Unix‑Tagen). Es ist die Abkürzung für „word count“ und kann Zeilen, Wörter und Zeichen in einer Datei oder einem Eingabestrom zählen.
Wie kann man Strings in Bash vergleichen?
cat1="Rosie"cat2="Sunflower"if [ "$cat1" === "$cat2" ]; then echo "Same cat"else echo "Different cats"fiEin weiterer Test‑Syntaxfehler!
Hast du den ungültigen ===‑Operator bemerkt?
Vielleicht hast du an JavaScript gedacht…
Mit [ ... ] gibt Bash eine Diagnose aus und die Bedingung ist falsch, sodass der else‑Zweig Different cats ausgibt. In Bash verwendet man = oder == für Gleichheitsvergleiche.
Was gibt dieses Skript aus?
function greet () { echo "$1"}greet Hi DanFunktionen in Bash können Argumente entgegennehmen. Die Variable $1 enthält das erste an die Funktion übergebene Argument.
Denke daran, $0 ist der Skriptname, $1 das erste Argument, $2 das zweite usw. Leerzeichen trennen Argumente. Also übergibt greet Hi Dan "Hi" als erstes Argument. Um "Hi Dan" als ein einziges Argument zu übergeben, muss man es quoten: greet "Hi Dan".
Wie funktioniert Mathematik in Bash?
Die (( ))‑Syntax führt Ganzzahl‑Mathematik in Bash aus.
Sie kann für einfache Berechnungen verwendet werden:
((result = 2 + 2))echo $result # => 4Oder für bedingte Ausdrücke:
if (( 2 > 1 )); then echo "2 is greater than 1"fiFür Fließkomma‑Arithmetik solltest du bc oder awk verwenden.
Welches davon multipliziert 10 und 0,5 korrekt und gibt 5 aus?
Was bewirkt das : in diesem Skript?
rosie="Bad cat, good cat"echo ${rosie:9}Die Syntax ${var:offset} extrahiert einen Teilstring, beginnend bei offset. Hier ist die Ausgabe:
good catUm einen Teilstring mit einer bestimmten Länge zu extrahieren, verwende ${var:offset:length}.
Um vom Ende der Zeichenkette zu extrahieren, verwende ${var: -offset}. (Beachte das Leerzeichen vor dem -!)
Hat mein Bash‑Quiz dich in die Knie gezwungen?
Lass es mich in den Kommentaren unten wissen!
Weiterführende Literatur
Frische deine Bash‑Kenntnisse mit den folgenden Ressourcen auf:
- Bash Guide
- BashFAQ
- ShellCheck
- Bash Academy
- Bash Scripting Tutorial
- Bash Reference Manual
- Bash Hackers Wiki
- Bash Guide for Beginners
- Bash Reference Card
