Pageferry
Workflows

Bash-Skript ausführen, vom Ordneröffnen bis zum Exit-Code

03
Skript ausführen

Ein Bash-Skript mit Argumenten in WSL oder über SSH ausführen

Ein Bash-Skript kann auf drei Arten gestartet werden: bash script.sh arg1 arg2, ./script.sh nach chmod +x, was wegen der Shebang-Zeile funktioniert, oder über das Builtin-Kommando exec, das die Shell ersetzt und nie zurückkehrt. Die erste Form ist am einfachsten zu starten, da keine Berechtigungsänderung nötig ist. Shell führt den Befehl in der von dir gewählten Umgebung aus, also WSL auf deinem PC oder einem Linux-System, das du über SSH erreichst, und die Karte im Chat zeigt die echte Ausgabe und den Exit-Code. Du entscheidest über die Argumente, sodass du den Normalfall und den Fehlerfall in einem Gespräch testen kannst. Viele fragen, welche Form sie wählen sollen: nutze bash script.sh zum Testen, da es auch ohne Ausführberechtigung funktioniert, und wechsle zu ./script.sh, sobald das Skript final ist und mit der Shebang-Zeile beginnt. Welche Form du auch wählst, der Exit-Status ist dieselbe Zahl von 0 bis 255, und 0 bedeutet immer, dass das Skript erfolgreich endete.

01

Ordner öffnen

Wähle den Ordner, der dein Skript enthält, als Arbeitsordner; Dateitools wie read_file und grep funktionieren darin. Dateitools arbeiten in diesem Ordner, während Shell, Web und SSH nicht darauf beschränkt sind.

02

Genehmigungsmodus wählen

Nutze Ask first, um jede Änderung als Diff zu sehen, oder Plan only, um erst einen Plan zu lesen. Auto-run führt sofort aus. Ask first pausiert nur vor Aktionen, die etwas ändern.

03

Um Ausführung bitten

Beschreibe die Ausführung in einfachen Worten, zum Beispiel: führe das Skript mit dem Argument test aus. Nenne WSL oder deinen Server, wenn du beide hast. Nenne das Skript und seine Argumente genau.

04

Ergebnis lesen

Öffne die Karte, um die Ausgabe und den echten Exit-Code zu sehen, und akzeptiere oder lehne dann jede Bearbeitung ab. Eine Zahl ungleich Null ist Information. Führe es nach jeder akzeptierten Bearbeitung erneut aus. Vergleiche es mit dem erwarteten Ergebnis.

Ein kleines Beispielskript

greet.sh
#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
  echo "Usage: $0 NAME [COUNT]" >&2
  exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
  echo "Hello, $name ($i)"
done
exit 0

greet.sh endet mit einer Nutzungsmeldung und Exit-Code 2, wenn der Name fehlt, nimmt einen optionalen Zähler mit einem Standardwert von 1 an und druckt nur Grüße in einer Schleife. Lies es einmal durch, bevor du es ausführst: es gibt kein sudo, keinen Download und nichts, das eine Datei verschiebt oder löscht, also ist es ungefährlich, es auf jeder Maschine zu testen, die dir gehört. Zeile für Zeile: die Shebang nennt den Interpreter, set -eu stoppt bei Fehlern und ungesetzten Variablen, die Prüfung von $# zählt die Argumente, und die for-Schleife gibt nur aus.

Ein Skript in vier kleinen Schritten ausführen

Skriptdatei erstellen

Starte mit einem leeren Arbeitsordner. Bitte den Agenten, das obige Beispiel zu schreiben, und write_file erstellt greet.sh in diesem Ordner. Öffne die Karte und lies die Datei Zeile für Zeile: Die erste Zeile ist die Shebang, die den Interpreter nennt, set -eu stoppt das Skript bei Fehlern und ungesetzten Variablen, und die Prüfung von $# schützt den Rest vor einem fehlenden Namen. Unter Ask first wartet die neue Datei auf dein OK, bevor sie geschrieben wird. Noch ist nichts ausgeführt worden. Der Nutzungszweig dieses Skripts wählt 2 für falsche Nutzung, was eine gängige Konvention ist. Akzeptiere die Datei nur, wenn du jede Zeile verstehst, und wenn nicht, bitte den Agenten, sie zu erklären. Eine abgelehnte Bearbeitung lässt den Ordner unverändert.

Ausführen und Exit-Code lesen

Menschen, die nach „bash execute script“ suchen, wollen normalerweise eine Zeile: bash greet.sh test. Bitte den Agenten, es auszuführen, und Shell startet den Befehl in der Umgebung deines Chats, z. B. WSL, und sendet die echte Ausgabe und den echten Exit-Code zurück. Erweitere die Karte für die vollständige Ausgabe. Bitte dann um denselben Lauf ohne Argument, und du solltest die Nutzungsmeldung und Exit-Code 2 sehen. Der Exit-Code für CLI-Anwendungen ist eine Zahl von 0 bis 255, die der Aufrufer liest, und 0 bedeutet Erfolg. Exit-Code 127 bedeutet, dass ein Befehl nicht gefunden wurde, und 126 bedeutet, dass eine Datei nicht ausgeführt werden kann, also deuten diese beiden Zahlen auf einen Tippfehler, ein fehlendes Programm oder eine fehlende Ausführberechtigung hin.

Argumente im Skript lesen

read_file zeigt das Skript und grep findet, wo $1 und $2 verwendet werden, sodass du prüfen kannst, ob jedes Argument einen Standardwert oder eine Fehlermeldung hat. So werden optionale Argumente parsept: Das Skript looppt mit getopts, und mit nur einem oder zwei Werten reichen die einfachen $1 und ${2:-1}. Aliase mit Argumenten verhalten sich nicht wie Funktionen, weil ein Alias nur das getippte Wort durch Text ersetzt, also verwende eine Funktion, wenn Werte in der Mitte stehen müssen. Bitte den Agenten, etwas zu ändern, zum Beispiel den Standardwert des Zählers, und lies den Diff, den edit_file zeigt. Führe das Skript dann erneut aus und vergleiche den neuen Exit-Code mit dem alten. Plan only kann die Parameter auflisten, die das Skript versteht, ohne etwas auszuführen.

Dasselbe Skript auf einem eigenen Server ausführen

Die gleichen Schritte funktionieren, wenn die Arbeitsumgebung ein Linux-System ist, das du besitzt und über SSH erreichst. Dateitools funktionieren weiterhin im Arbeitsordner des Chats, während Shell-Befehle in der von dir gewählten Umgebung ausgeführt werden, also prüfe, auf welche Umgebung sich eine Karte bezieht. Das Builtin-Kommando exec, nach dem Menschen als „bash exec script“ suchen, ersetzt die Shell durch einen anderen Befehl und kehrt nie zurück, also wird nichts danach ausgeführt, und der Exit-Code ist der des neuen Befehls. Halte eine Kopie bereit, bevor ein Skript Dateien verschiebt oder löscht, führe es zuerst mit echo als Trockenlauf aus, und nutze nur Maschinen, die du verwalten darfst. Lies die letzte Karte, bevor du den Chat schließt. Wenn du alle Werte an einen anderen Befehl weitergibst, schreibe "$@" in doppelten Anführungszeichen, damit jeder Wert seine Form behält.

Pageferry für Windows

Ein Bash-Skript auf deiner eigenen Maschine testen

Pageferry herunterladen ↗