Einführung in Shell Script
Konzept
Shell-Skript ist eine Textdatei, die eine Reihe von Befehlen enthält.
Shell liest diese Datei und führt Befehle aus
Anwendungsszenarien
- Wiederholter Betrieb
- Massentransaktionsverarbeitung
- Automatisierter Betrieb und Wartung
- Geplante Aufgabenausführung
Das erste Shell-Skript
Schreiben Sie das erste Shell-Skript helloword.sh
#!/bin/bash
echo “Hello World”
#! ist eine vereinbarte Marke, die dem System mitteilt, welchen Interpreter das Skript ausführen muss
Allgemeine Ausführungsmethoden von Skripten
Das erste: Verwenden Sie den relativen Pfad oder den absoluten Pfad von bash oder sh + script (geben Sie nicht die Erlaubnis script + x).
sh helloworld.sh
bash helloworld.sh
Der zweite Typ: Verwenden Sie den absoluten Pfad oder den relativen Pfad des Eingabeskripts, um das Skript auszuführen (muss über die ausführbare Berechtigung + x verfügen). "
- Geben Sie dem Skript helloworld.sh zunächst die Berechtigung + x
chmod 777 helloworld.sh
- Skript ausführen
./helloworld.sh
Variablen in der Shell
Systemvariable
Allgemeine Systemvariablen:
$ HOME, $ PWD, $ SHELL, $ USER usw.
Hinweis: Alle Variablen in der aktuellen Shell anzeigen: set
[root@cent02 ~]# echo $PWD
/root
Benutzerdefinierte Variable
Grundlegende Grammatik
- Variable definieren: Variable = Wert
- Variable rückgängig machen: Variable zurücksetzen
- Deklarieren Sie statische Variablen: schreibgeschützte Variablen, Hinweis: Kann nicht deaktiviert werden
Regeln zum Definieren von Variablen
- Variablennamen können aus Buchstaben, Zahlen und Unterstrichen bestehen, sie können jedoch nicht mit Zahlen beginnen.
- Auf beiden Seiten des Gleichheitszeichens dürfen keine Leerzeichen stehen
- Variablennamen werden im Allgemeinen in Großbuchstaben verwendet
Weisen Sie einer Variablen den Rückgabewert des Befehls zu
- A = `ls -la` backquote, führen Sie den Befehl inside aus und geben Sie das Ergebnis an die Variable A zurück
- A = $ (ls -la) entspricht Backticks
NN0[root@cent02 ~]# A=`ll`
[root@cent02 ~]# echo $A
total 48 -rw-------. 1 root root 1320 Aug 11 03:20 anaconda-ks.cfg -rw-r--r--. 1 root root 18430 Aug 18 03:57 H:testschool.sql -rw-r--r--. 1 root root 10399 Aug 19 01:12
Umgebungsvariablen festlegen
Name der Exportvariablen = Variablenwert (Funktionsbeschreibung: Shell-Variablen als Umgebungsvariablen ausgeben)
Quellkonfigurationsdatei (Funktionsbeschreibung: Die geänderten Konfigurationsinformationen werden sofort wirksam.)
echo $ Variablenname (Funktionsbeschreibung: Abfrage des Werts der Umgebungsvariablen)
Positionsparametervariable
- $ n (Funktionsbeschreibung: n ist eine Zahl, $ 0 steht für den Befehl selbst, $ 1- $ 9 für den ersten bis neunten Parameter, Parameter über zehn, Parameter über zehn müssen in geschweiften Klammern stehen, z. B. $ {10})
- $ * (Funktionsbeschreibung: Diese Variable repräsentiert alle Parameter in der Befehlszeile, $ * betrachtet alle Parameter als Ganzes)
- $ @ (Funktionsbeschreibung: Diese Variable repräsentiert auch alle Parameter in der Befehlszeile, aber $ @ behandelt jeden Parameter anders.)
- $ # (Funktionsbeschreibung: Diese Variable repräsentiert die Anzahl aller Parameter in der Befehlszeile)
Vordefinierte Variablen
- $$ (Funktionsbeschreibung: Prozess-ID (PID) des aktuellen Prozesses)
- $! (Funktionsbeschreibung: Prozess-ID (PID) des letzten im Hintergrund ausgeführten Prozesses)
- $? (Funktionsbeschreibung: Der Rückgabestatus des zuletzt ausgeführten Befehls. Wenn der Wert dieser Variablen 0 ist, beweist dies, dass der vorherige Befehl korrekt ausgeführt wurde. Wenn der Wert dieser Variablen nicht 0 ist (welche Zahl vom Befehl selbst bestimmt wird), dann Beweisen Sie, dass der vorherige Befehl falsch ausgeführt wurde.)
Operator
- "$ ((Ausdruck))" oder "$ [Ausdruck]"
Ausdruck m + n Beachten Sie, dass zwischen den Ausdrucksoperatoren Leerzeichen stehen müssen - Ausdruck m-n
Ausdruck *, /,% Multiplikation, Division, Rest
Bedingtes Urteil
[Bedingung] (Beachten Sie, dass vor und nach der Bedingung Leerzeichen stehen müssen.)
# Nicht leer gibt true zurück. Sie können $? Zum Überprüfen verwenden (0 ist true,> 1 ist false).
Häufig verwendete Urteilsbedingungen
-
Vergleich zweier Ganzzahlen
Optionen Beschreibung -eq gleich -geboren Nicht gleichzusetzen mit -gt mehr als die -lt Weniger als -das Gleich oder kleiner als -geben größer als oder gleich wie -
Beurteilen Sie nach Dateiberechtigungen
Optionen Beschreibung -d Bestimmen Sie, ob es sich um ein Verzeichnis handelt -e Bestimmen Sie, ob das Verzeichnis oder die Datei vorhanden ist -f Bestimmen Sie, ob es sich um eine Datei handelt -r Bestimmen Sie, ob eine Datei oder ein Verzeichnis vom aktuellen Benutzer gelesen werden kann -w Bestimmen Sie, ob die Datei oder das Verzeichnis vom aktuellen Benutzer beschreibbar ist -x Bestimmen Sie, ob die Datei oder das Verzeichnis für den aktuellen Benutzer ausführbar ist
Prozesssteuerung
wenn Urteil
if [ 条件判断式 ];then
程序
fi
oder
if [ 条件判断式 ]
then
程序
elif [条件判断式]
then
程序
fi
Hinweis: (1) [Bedingte Beurteilungsformel], zwischen den Klammern und der bedingten Beurteilungsformel muss ein Leerzeichen stehen. (2) Die zweite Methode wird empfohlen
case Anweisung
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
für Schleife
for 变量 in 值 1 值 2 值 3…
do
程序
done
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
while-Schleife
while [ 条件判断式 ]
do
程序
done
read read console input
read(选项)(参数)
Optionen:
-p: Geben Sie die Eingabeaufforderung beim Lesen des Werts an.
-t: Geben Sie die Wartezeit (Sekunden) beim Lesen des Werts an. Wenn er nicht innerhalb der angegebenen Zeit eingegeben wird, wartet er nicht mehr. .
Parameter
Variable: Geben Sie den Variablennamen an, um den Wert zu lesen
Funktion
Systemfunktion
- Grundname Grundsyntax
Funktion: Kehren Sie zum letzten Teil des vollständigen Pfads zurück, der häufig zum Abrufen des Dateinamens verwendet wird
Basisname [Pfadname] [Suffix]
Basisname [Zeichenfolge] [Suffix] (Funktionsbeschreibung: Der Befehl Basisname löscht alle Präfixe einschließlich des letzten ('/').
Zeichen, und zeigen Sie dann die Zeichenfolge an.
Optionen:
Suffix ist das Suffix. Wenn ein Suffix angegeben wird, entfernt der Basisname das Suffix aus dem Pfadnamen oder der Zeichenfolge.
- Grundlegende Syntax von dirname
Funktion: Rückkehr zum letzten / vorherigen Teil des vollständigen Pfads, häufig verwendet, um zum Pfadteil zurückzukehren
absoluter Pfad der Verzeichnisdatendatei (Funktionsbeschreibung: Entfernen Sie den Dateinamen aus dem angegebenen Dateinamen, der den absoluten Pfad enthält (kein Verzeichnis)
Teil) und kehren Sie dann zum verbleibenden Pfad (Teil des Verzeichnisses) zurück.)
Benutzerdefinierte Funktion
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]