Skripte Flashcards
Welche spezielle Bash-Variable enthält den Namen des Skripts, samt Pfad, das aktuell ausgeführt wird?
$0
Wenn das Skript beispielsweise unter /pfad/zum/skript/mein_skript.sh gestartet wurde, wird $0 den Wert /pfad/zum/skript/mein_skript.sh enthalten.
Eine Skriptdatei namens do.sh ist ausführbar, und der symbolische Link undo.sh zeigt
darauf. Wie könnten Sie aus dem Skript heraus erkennen, ob der aufrufende Dateiname do.sh
oder undo.sh lautet?
Die spezielle Variable $0 enthält den Dateinamen, bzw vollständigen Pfad, mit dem das Skript aufgerufen wurde.
Welche spezielle Bash-Variable enthält eine Liste aller Argumente, die an das aktuelle Skript übergeben wurden ?
$*
$@
Welche spezielle Bash Variable enthält die Anzahl der Argumente die an das Skript übergeben wurden ?
$#
Welche spezielle Bash Variable enthält die PID des zuletzt ausgeführten Hintergrundjobs ?
$!
Welche spezielle Bash Variable enthält die PID der aktuellen Shell ?
` $$`
Wie heißt die erste Zeile eines Scripts für /bin/bash ?
#! /bin/bash
Shebangzeile
Wird ein Skript ausgeführt, sorgt die Shebangzeile (#!) dafür, dass eine neue Shell aufgerufen wird.
Außerdem definiert Sie den Interpreter - also /bin/bash für bash skripte.
Wie können Skripte ausgeführt werden ?
bash script.sh
(braucht nur Leserechte, erzeugt childshell)
source script.sh
(braucht nur Leserechte). script.sh
Beim Sourcen wird keine Subshell geöffnet bei Skriptausführung
./script.sh
(Datei muss ausführbar sein, erzeugt childshell)
…
Bei einem Skript mit sehr eingeschränkten Aufgaben kann die SUID-Berechtigung gesetzt sein, so dass auch normale Benutzer das Skript mit Root-Rechten ausführen können.
Was macht der command exec ?
Wenn Sie innerhalb eines Skripts ein externes Programm oder ein anderes Skript aufrufen wollen und mit diesem Programm oder Skript den aktuell laufenden Prozess ersetzen wollen, können Sie diesem Programm das Kommando exec voranstellen.
Die aufrufende Shell wird dann durch das aufgerufene Programm beendet und ersetzt.
Wenn exec verwendet wird, wird der aktuelle Shell-Prozess durch das Programm ersetzt, das mit exec aufgerufen wird.
Mit anderen Worten, exec tauscht das aktuelle Programm, das du ausführst, mit einem anderen Programm aus, ohne einen neuen Prozess zu starten. Das kann nützlich sein, wenn du beispielsweise ein Skript ausführst und nach Abschluss dieses Skripts möchtest, dass die Shell stattdessen ein anderes Programm ausführt.
Wie werden in einem Bashscript mehrere Befehle seperiert ?
Semikolon (;
): Sie können Befehle direkt durch Semikolons trennen. Dadurch werden die Befehle sequenziell ausgeführt, unabhängig davon, ob der vorherige Befehl erfolgreich war oder nicht.befehl1; befehl2; befehl3
…
Zeilenfortsetzung mit Backslashes: Wenn Sie eine Befehlszeile auf mehrere Zeilen aufteilen möchten, können Sie den Backslash (\
) verwenden. Bash interpretiert dies als eine Zeilenfortsetzung. Zum Beispiel:echo \
"Dies ist ein langer Text, der auf mehrere Zeilen \
aufgeteilt ist."
…
Und-Verknüpfung (&&
): Sie können Befehle auch mit dem &&-Operator verknüpfen, der sicherstellt, dass der nachfolgende Befehl nur ausgeführt wird, wenn der vorherige erfolgreich war (Exit-Status 0).befehl1 && befehl2 && befehl3
…
Oder-Verknüpfung (||
): Der ||-Operator verknüpft Befehle und stellt sicher, dass der nachfolgende Befehl nur ausgeführt wird, wenn der vorherige fehlgeschlagen ist
(Exit-Status ungleich 0).befehl1 || befehl2 || befehl3
Welche spezielle Bash Variablen enthalten Übergabewerte, die mittels Argument übergeben werden ?
$1
bis $9
Alles über 9 muss innerhalb des Skripts mittels geschweifter Klammern referenziert werden…${10}
Welche spezielle Bash Variable enthält den numerischen Exitstatus des letzten Befehls ?
$?
Die Ausgabe von 0 bedeutet, dass das letzte Kommando erfolgreich ausgeführt wurde, alles andere sind Fehlercodes.
Welcher command kann innerhalb eines skriptes verwendet werden, um den Benutzer während der Skriptausführung nach Eingaben zu fragen?
Interaktive prompts.
read Varname
Ist der Name der Variablen nicht angegeben, wird standardmäßig der Variablenname REPLY
verwendet.
-p gibt die Meldung selbst aus. echo wird daher überflüssig read -p "Type first name and last name:" NAME SURNAME
Wie ist die Syntax für eine for Schleife, die mittels Befehlssubstitution die Ausgabe von find in der Variable Z speichert?
Sie soll alle Datein von ~/Documents mit der Endung .old in z speichern und das Ergebnis ausgeben.
Danach soll die Variable z wieder zurückgesetzt werden.
for VARIABLE in LIST do COMMANDS done
..LIST
eine beliebige Folge getrennter Begriffe, oder commands (Befehlsubstitution)
..
for z in $(find /home -name \*.old) do echo "Hier sind die Daten: $z done unset z
Mit welchem command wird eine Variable Namens SIZES zu einer Array-Variable gemacht ?
declare -a SIZES
Wie wird das erste Element in einer Array Variable Namens SIZES referenziert?
echo ${SIZES[0]}
Wie werden mehrere Werte einer Array Variable Namens SIZES zugewiesen ?
SIZES=(Wert1 Wert2 Wert3)
Trennzeichen kann sein:
Leerzeichen
Tab
Neuzeile
Wie werden mehrere Element einer Array Variable Namens FS mittels Befehlsubstitution zugewiesen ?
verwende dazu den command…cut -f 2 < /proc/filesystems
FS=( $(cut -f 2 < /proc/filesystems) )
sofern die Ausgabe des Befehls Leerzeichen, Tab, Neuzeile enthält, werden mehrere Elemente im Array befüllt.
Mit welchem command können zwei Variablen, deren Inhalt numerisch ist addiert, bzw potenziert werden ?
Speicher das ergebnis in der variable sum
sum=$(expr $var1 + $var2) oder sum=$((var1 + $var2))