0Pricing
DevOps Bootcamp · Lektion

Bewährte Verfahren und Linting für Skripte

Lernen Sie Konventionen, Kommentierung und Tools wie ShellCheck kennen, um saubere, lesbare und fehlerfreie Bash-Skripte zu schreiben.

Bewährte Verfahren und Linting für Skripte ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Warum Best Practices für Skripte?

Bash-Skripte sind leistungsfähig. Ohne gute Gewohnheiten können sie jedoch schwer verständlich, wartbar und zu debuggen sein.

Best Practices sind Richtlinien, die Ihnen helfen, sauberen, robusten und gut lesbaren Code zu schreiben. Dadurch werden Ihre Skripte:

  • Leichter lesbar: für Sie selbst und für andere.
  • Besser wartbar: einfacher zu aktualisieren oder zu korrigieren.
  • Weniger fehleranfällig: häufige Fehler werden vermieden.
  • Besser für die Zusammenarbeit geeignet: das Aussehen und Verhalten des Codes werden vereinheitlicht.

Klarheit durch Kommentare

Kommentare sind entscheidend, um zu erklären, warum Ihr Code etwas tut, und nicht nur, was er tut. Sie dienen Ihnen selbst oder anderen Entwicklern später als Notizen.

Verwenden Sie Kommentare, um:

  • den allgemeinen Zweck des Skripts am Anfang zu beschreiben.
  • komplexe Logik oder knifflige Abschnitte zu erklären.
  • Funktionen zu dokumentieren: ihren Zweck, ihre Argumente und ihre Rückgabewerte.

Beginnen Sie einen Kommentar mit dem #-Symbol (Raute).

#!/bin/bash
# This script demonstrates commenting best practices.
# Author: CoddyKit
# Date: 2023-10-27

# Function: greet_user
# Description: Prints a greeting message to the console.
# Arguments:
#   $1 - The name of the user to greet.
greet_user() {
  local name="$1" # Store the first argument in a local variable.
  echo "Hello, ${name}!" # Output the greeting message.
}

# Main script execution starts here.
echo "Script execution started."
greet_user "CoddyKit Learner" # Call the function with a specific name.
echo "Script execution finished."

Klare Namenskonventionen

Aussagekräftige Namen machen Ihr Skript leichter verständlich. Vermeiden Sie Variablen mit nur einem Buchstaben, außer bei üblichen Schleifenzählern wie i oder j.

Allgemeine Konventionen:

  • Variablen: Verwenden Sie aussagekräftige Namen (z. B. user_name, log_file). Verwenden Sie UPPERCASE für Umgebungsvariablen oder globale Konstanten und lowercase_with_underscores für lokale Skriptvariablen.
  • Funktionen: Verwenden Sie lowercase_with_underscores, häufig beginnend mit einem Verb (z. B. process_data, check_status).
  • Skripte: Verwenden Sie lowercase_with_hyphens (z. B. backup-script.sh).

Einheitliche Formatierung und Einrückung

Eine einheitliche Formatierung, etwa bei Einrückungen und Leerzeichen, verbessert die Lesbarkeit erheblich. Stellen Sie sich vor, Sie würden ein Buch mit uneinheitlichen Absatzeinzügen lesen!

Wichtige Punkte:

  • Verwenden Sie 2 oder 4 Leerzeichen für Einrückungen (Tabulatoren werden häufig nicht empfohlen).
  • Halten Sie Zeilen kurz (unter 80 Zeichen ist für Terminals eine gute Faustregel).
  • Verwenden Sie Leerzeilen, um logische Codeblöcke zu trennen.
  • Richten Sie zusammengehörige Elemente aus, wenn es sinnvoll ist.

Einheitlichkeit ist wichtiger als der konkrete Stil, für den Sie sich entscheiden.

Robustheit: 'set -u' (nounset)

Die Option set -u (oder set -o nounset) ist äußerst hilfreich, um Fehler durch Tippfehler oder versehentlich nicht gesetzte Variablen zu verhindern. Wenn Ihr Skript versucht, eine Variable zu verwenden, der kein Wert zugewiesen wurde, beendet set -u das Skript sofort mit einem Fehler.

So werden Fehler früh erkannt und unerwartetes Verhalten später im Skript verhindert.

Führen Sie den folgenden Code aus. Er ist so aufgebaut, dass er frühzeitig beendet wird, weil UNSET_NAME nicht definiert ist.

#!/bin/bash
# Demonstrating 'set -u' (nounset)

set -u # Exit if an unset variable is used

MY_GREETING="Hello"
echo "${MY_GREETING}, CoddyKit!"

# This variable is NOT set. With 'set -u', the script will exit here.
echo "Your name is: ${UNSET_NAME}" 

echo "This line will NOT be reached if 'set -u' is active and UNSET_NAME is indeed unset."

Robustheit: 'set -o pipefail'

Wenn Sie Befehle über eine Pipe weiterleiten (z. B. cmd1 | cmd2 | cmd3), meldet Bash normalerweise nur den Exit-Status des letzten Befehls in der Pipe. Wenn also cmd1 fehlschlägt, cmd2 und cmd3 aber erfolgreich sind, kann die Pipe trotzdem Erfolg melden!

set -o pipefail ändert dieses Verhalten. Wenn ein beliebiger Befehl in einer Pipe fehlschlägt (also einen Exit-Status ungleich null zurückgibt), entspricht der Exit-Status der gesamten Pipe diesem Wert ungleich null.

Dadurch werden Ihre Pipelines zuverlässiger, da sofort signalisiert wird, wenn ein früherer Befehl fehlgeschlagen ist.

#!/bin/bash
# Demonstrating 'set -o pipefail'

set -o pipefail # Ensures pipe's exit status is the last non-zero command

echo "Running a failing command in a pipe:"
echo "---"

# 'false' command always fails (exit status 1).
# 'cat /dev/null' always succeeds (exit status 0).
# With 'set -o pipefail', the pipe's overall exit status will be 1 from 'false'.
false | cat /dev/null

# This line will only be reached if the pipe above succeeds.
echo "---"
echo "Script finished successfully (this line won't show if pipe failed with set -o pipefail)."

ShellCheck kennenlernen

Selbst bei der Befolgung von Best Practices übersieht man leicht kleine Syntaxfehler oder häufige Fallstricke. Genau hier kommt ShellCheck ins Spiel!

ShellCheck ist ein Tool zur statischen Analyse (ein „Linter“) für Shell-Skripte. Es liest Ihr Skript und weist auf Folgendes hin:

  • Syntaxfehler.
  • Häufige Anfängerfehler.
  • Subtile semantische Probleme.
  • Probleme bei der Portierbarkeit zwischen verschiedenen Shells.

ShellCheck gibt hilfreiche Vorschläge aus, oft mit Links zu ausführlicheren Erklärungen.

ShellCheck in Aktion: Fehlerhaftes Skript

Sehen wir uns ein Skript mit einigen häufigen Problemen an. Diese führen möglicherweise nicht sofort zum Absturz des Skripts, stellen aber schlechte Vorgehensweisen oder potenzielle Fehler dar.

Stellen Sie sich vor, dieses Skript ist unter bad_script.sh gespeichert. Um ShellCheck darauf auszuführen, geben Sie Folgendes ein: shellcheck bad_script.sh

Versuchen Sie, die Probleme zu erkennen, bevor Sie ShellCheck ausführen!

#!/bin/bash
# A script with some common issues

MY_NAME=coddykit # Variable assignment needs no space, but quoting is good for values
echo "Hello $MY_NAME!" # Missing quotes around variable expansion

if [ $1 = "admin" ]; then # Missing quotes around $1
  echo "Welcome, administrator."
fi

# A simple loop with potential issues
for file in *.txt; do # Unquoted glob could expand to multiple arguments
  echo File: $file # Missing quotes around $file
done

ShellCheck-Warnungen beheben

ShellCheck würde etwa folgende Ausgabe liefern: SC2086: Double quotes missing around "$MY_NAME". Häufig wird ein bestimmter Code (z. B. SC2086) angegeben, nach dem Sie suchen können, um weitere Informationen zu erhalten.

Hier ist das vorherige Skript, entsprechend den Empfehlungen von ShellCheck und allgemeinen Best Practices korrigiert:

Beachten Sie die Verwendung doppelter Anführungszeichen "" um Variablenexpansionen und Befehlssubstitutionen. Dadurch werden Word Splitting und Globbing verhindert, die häufige Fehlerquellen sind.

#!/bin/bash
# A script with issues fixed by ShellCheck

MY_NAME="CoddyKit" # Quote variable assignment values
echo "Hello ${MY_NAME}!" # Always quote variable expansions

if [ "$1" = "admin" ]; then # Quote positional parameters like $1
  echo "Welcome, administrator."
fi

# A simple loop with corrected quoting
for file in *.txt; do 
  echo "File: ${file}" # Quote variable expansions, especially in loops
done

Best-Practices-Überprüfung

Welche der folgenden Vorgehensweisen gelten beim Schreiben von Bash-Skripten als gute Praxis?

Zusammenfassung: Professionelles Scripting

Herzlichen Glückwunsch! Sie haben gelernt, wie Sie Ihre Bash-Skripte von funktional zu professionell weiterentwickeln.

Wir haben Folgendes behandelt:

  • Die Bedeutung von Best Practices für Lesbarkeit und Wartbarkeit.
  • Die Verwendung von Kommentaren und Namenskonventionen für mehr Klarheit.
  • Wie Sie Skripte mit set -u und set -o pipefail robust machen.
  • Die Möglichkeiten von ShellCheck, Probleme automatisch zu finden und Ihren Code zu verbessern.

Wenn Sie diese Prinzipien anwenden, schreiben Sie zuverlässigere, verständlichere und besser gemeinsam nutzbare Bash-Skripte. Üben Sie weiter!

Häufig gestellte Fragen

Ist die Lektion „Bewährte Verfahren und Linting für Skripte“ kostenlos?

Ja — der vollständige Text von „Bewährte Verfahren und Linting für Skripte“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Bewährte Verfahren und Linting für Skripte“?

Lernen Sie Konventionen, Kommentierung und Tools wie ShellCheck kennen, um saubere, lesbare und fehlerfreie Bash-Skripte zu schreiben. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Bewährte Verfahren und Linting für Skripte“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Bash-Skripte debuggen (set -x, trap)
  2. Fehlerbehandlung und Exit-Status
  3. Bewährte Verfahren und Linting für Skripte
  4. Bash-Skripte mit Bats testen
← Zurück zu DevOps Bootcamp