Inhaltsverzeichnis- 1. Einige Punkte, die Sie beachten sollten
- 1. Variablentyp
- 2. Beschreibung der Shell-Variablen
- 3. Der Unterschied zwischen einfachen Anführungszeichen, doppelten Anführungszeichen und umgekehrten Anführungszeichen
- 4. Shell-Escapezeichen
- 5. Liste der arithmetischen Operatoren
- 6. Relationale Operatoren
- 7. Liste der Booleschen Operatoren
- 8. Liste der Dateitestoperatoren
- 2. Beispiele für häufig verwendete Skriptbefehle

1. Einige Punkte, die Sie beachten sollten 1. Variablentyp Beim Ausführen der Shell sind drei Variablen gleichzeitig vorhanden: 1) Lokale Variablen Lokale Variablen werden in Skripten oder Befehlen definiert und sind nur in der aktuellen Shell-Instanz gültig. Von anderen Shells gestartete Programme können nicht auf lokale Variablen zugreifen. 2) Umgebungsvariablen Alle Programme, einschließlich der von der Shell gestarteten, können auf Umgebungsvariablen zugreifen, und einige Programme erfordern Umgebungsvariablen, um ihren normalen Betrieb sicherzustellen. Shell-Skripte können bei Bedarf auch Umgebungsvariablen definieren. 3) Shell-Variablen Shell-Variablen sind spezielle Variablen, die vom Shell-Programm festgelegt werden. Einige Shell-Variablen sind Umgebungsvariablen, andere sind lokale Variablen. Diese Variablen stellen den normalen Betrieb der Shell sicher.
2. Beschreibung der Shell-Variablen $$ Die PID (ProcessID) der Shell selbst $! PID des zuletzt von der Shell ausgeführten Hintergrundprozesses $? Der Exit-Code (Rückgabewert) des zuletzt ausgeführten Befehls $- Liste der mit dem Set-Befehl gesetzten Flags $* Liste aller Parameter. Wenn "$*" in "" eingeschlossen ist, werden alle Parameter in der Form "$1 $2 ... $n" ausgegeben. $@ Liste aller Parameter. Wenn "$@" in "" Klammern eingeschlossen ist, werden alle Parameter in der Form "$1" "$2" … "$n" ausgegeben. $# Die Anzahl der zur Shell hinzugefügten Parameter $0 Der Dateiname der Shell selbst $1~$n Fügen Sie der Shell die Parameterwerte hinzu. $1 ist der erste Parameter, $2 ist der zweite Parameter und so weiter.
3. Der Unterschied zwischen einfachen Anführungszeichen, doppelten Anführungszeichen und umgekehrten Anführungszeichen Wenn einfache Anführungszeichen ' ' verwendet werden, um den Wert einer Variablen einzuschließen, wird der Inhalt innerhalb der einfachen Anführungszeichen ausgegeben. Auch wenn der Inhalt Variablen und Befehle enthält (Befehle müssen in Anführungszeichen eingeschlossen werden), werden diese unverändert ausgegeben. Wenn der Wert einer Variablen in Anführungszeichen " " eingeschlossen wird, werden bei der Ausgabe zuerst die darin enthaltenen Variablen und Befehle analysiert, statt die Variablennamen und Befehle in den Anführungszeichen unverändert auszugeben. Durch Backticks ` ` (unterhalb der Esc-Taste) wird eine Befehlsersetzung erreicht, indem die Shell den Befehl zunächst ausführen, die Ausgabe zwischenspeichern und anschließend an der entsprechenden Stelle ausgeben kann. Sie können Variablen angeben mit
4. Shell-Escapezeichen \\ Backslash \a Wecker, klingelt \b Rücktaste (Entf-Taste) \f Seitenvorschub (FF), verschiebt die aktuelle Position an den Anfang der nächsten Seite \n Zeilenumbruch \r Eingeben \t Horizontales Tabulatorzeichen (Tabulatortaste) \v vertikales Tabulatorzeichen
5. Liste der arithmetischen Operatoren Operator Beschreibung Beispiel + Die Addition `expr $a + $b` ergibt 30. – Das Ergebnis der Subtraktion `expr $a – $b` ist 10. \* Die Multiplikation `expr $a \* $b` ergibt 200. / Die Division `expr $b / $a` ergibt 2. % Der Rest von ‚expr $b % $a‘ ist 0. = Die Zuweisung a=$b weist a den Wert der Variablen b zu. == ist gleich. Vergleicht zwei Zahlen und gibt „true“ zurück, wenn sie gleich sind. [ $a == $b ] gibt false zurück. != Ungleich. Vergleicht zwei Zahlen und gibt „true“ zurück, wenn sie unterschiedlich sind. [ $a != $b ] gibt true zurück.
6. Relationale Operatoren Relationale Operatoren unterstützen nur Zahlen, keine Zeichenfolgen, es sei denn, der Zeichenfolgenwert ist eine Zahl. Operator Beschreibung Beispiel -eq prüft, ob zwei Zahlen gleich sind, und gibt „true“ zurück, wenn sie gleich sind. [ $a -eq $b ] gibt true zurück. -ne prüft, ob zwei Zahlen gleich sind, und gibt „true“ zurück, wenn sie nicht gleich sind. [ $a -ne $b ] gibt true zurück. -gt prüft, ob die Zahl links größer ist als die Zahl rechts und gibt „true“ zurück, wenn dies der Fall ist. [ $a -gt $b ] gibt false zurück. -lt Überprüft, ob die Zahl links kleiner ist als die Zahl rechts, und gibt „true“ zurück, wenn dies der Fall ist. [ $a -lt $b ] gibt true zurück. -ge prüft, ob die Zahl auf der linken Seite größer oder gleich der Zahl auf der rechten Seite ist, und gibt „true“ zurück, wenn dies der Fall ist. [ $a -ge $b ] gibt false zurück. -le prüft, ob die Zahl auf der linken Seite kleiner oder gleich der Zahl auf der rechten Seite ist, und gibt „true“ zurück, wenn dies der Fall ist. [ $a -le $b ] gibt true zurück.
7. Liste der Booleschen Operatoren Operator Beschreibung Beispiel ! Keine Operation. Wenn der Ausdruck wahr ist, gibt er „false“ zurück, andernfalls „true“. [ ! false ] gibt true zurück. -o ODER-Operation, gibt „true“ zurück, wenn ein Ausdruck wahr ist. [ $a -lt 20 -o $b -gt 100 ] gibt true zurück. -eine UND-Operation, gibt nur dann „true“ zurück, wenn beide Ausdrücke wahr sind. [ $a -lt 20 -a $b -gt 100 ] gibt false zurück.
8. Liste der Dateitestoperatoren Operator Beschreibung Beispiel -b Datei Überprüft, ob die Datei eine Blockgerätedatei ist und gibt „true“ zurück, wenn dies der Fall ist. [ -b $file ] gibt false zurück. -c Datei Überprüft, ob die Datei eine Zeichengerätedatei ist und gibt „true“ zurück, wenn dies der Fall ist. [ -b $file ] gibt false zurück. -d Datei Überprüft, ob die Datei ein Verzeichnis ist, und gibt „true“ zurück, wenn dies der Fall ist. [ -d $file ] gibt false zurück. -f Datei Überprüft, ob die Datei eine normale Datei ist (weder ein Verzeichnis noch eine Gerätedatei) und gibt „true“ zurück, wenn dies der Fall ist. [ -f $file ] gibt true zurück. -g Datei Überprüft, ob das SGID-Bit für die Datei gesetzt ist und gibt andernfalls „true“ zurück. [ -g $file ] gibt false zurück. -k Datei Überprüft, ob in der Datei das Sticky Bit gesetzt ist, und gibt andernfalls „true“ zurück. [ -k $file ] gibt false zurück. -p Datei Überprüft, ob die Datei eine benannte Pipe ist, und gibt „true“ zurück, wenn dies der Fall ist. [ -p $file ] gibt false zurück. -u Datei Überprüft, ob das SUID-Bit für eine Datei gesetzt ist und gibt „true“ zurück, wenn dies der Fall ist. [ -u $file ] gibt false zurück. -r Datei Überprüft, ob die Datei lesbar ist und gibt „true“ zurück, wenn dies der Fall ist. [ -r $file ] gibt true zurück. -w Datei Überprüft, ob die Datei beschreibbar ist und gibt „true“ zurück, wenn dies der Fall ist. [ -w $file ] gibt true zurück. -x Datei Überprüft, ob die Datei ausführbar ist und gibt „true“ zurück, wenn dies der Fall ist. [ -x $file ] gibt true zurück. -s Datei prüft, ob die Datei leer ist (ob die Dateigröße größer als 0 ist) und gibt „true“ zurück, wenn sie nicht leer ist. [ -s $file ] gibt true zurück. -e Datei Überprüft, ob eine Datei (einschließlich Verzeichnisse) vorhanden ist, und gibt „true“ zurück, wenn dies der Fall ist. [ -e $file ] gibt true zurück.
2. Beispiele für häufig verwendete Skriptbefehle Das Beispiel ist zu lang, daher werde ich nur eines auflisten. 1. Wir speichern Nginx-Protokolle in nginx.log, zählen die Anzahl der Zugriffs-IPs am 23. April 2020 und sortieren sie in absteigender Reihenfolge Beispiel: 192.168.1.20 - - [21/Apr/2020:14:27:49 +0800] "GET /1/index.php HTTP/1.1" 404 490 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0"
cat nginx.log | grep 23.04.2020 | awk -F "-" '{print $1}'|sort|uniq -c | sort -r | awk '{print $1,$2}' 2. Wir speichern Nginx-Protokolle in nginx.log und zählen die Anzahl der doppelten IP-Besuche von 20:00 bis 23:00 Uhr am 23. April 2020 Beispiel: 192.168.1.20 - - [21/Apr/2020:14:27:49 +0800] "GET /1/index.php HTTP/1.1" 404 490 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0"
cat nginx.log | grep 23.04.2020:2[0-3] | awk '{print $1}' | sortieren | uniq | wc -l 3. Wir speichern Nginx-Protokolle in nginx.log und schreiben Skripte, um IP-Adressen zu zählen, die mehr als dreimal besucht wurden Beispiel: 192.168.1.20 - - [21/Apr/2020:14:27:49 +0800] "GET /1/index.php HTTP/1.1" 404 490 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0"
cat nginx.log | awk '{print $1}'| sortieren | uniq -c | awk '{if ($1 >3) print $0}' | sortieren -r | awk '{print $1,$2}' Awk-Datenfeldvariablen $0 steht für die gesamte Textzeile $1 stellt das erste Datenfeld im Text dar $2 stellt das zweite Datenfeld im Text dar $n stellt das n-te Datenfeld im Text dar
4. Tragen Sie die Ergebnisse des netstat-Befehls in netstat.txt ein, zeigen Sie alle IPs an, die eine Verbindung mit Port 3306 des lokalen Computers hergestellt haben und sich im hergestellten Zustand befinden, und sortieren Sie sie in absteigender Reihenfolge nach der Anzahl der Verbindungen Beispiel: tcp 0 0 172.16.56.200:41856 172.16.34.144:3306 ESTABLISHED
cat netstat.txt | grep HERGESTELLT | grep 3306 | awk '{print $5}' | awk -F ":" '{print $1}' | sort | uniq -c | sort -hr | awk '{print $1,$2}' 5. Zählen Sie die verwendeten oder nicht verwendeten IP-Adressen im Netzwerksegment
#!/bin/bash
für IP in „seq 0 255“
Tun
ping -c 1 -i 0 192.168.2.$ip
wenn [ $? -eq 0 ]
Dann
echo "192.168.2.$ip" >> /root/up.txt
anders
echo "192.168.2.$ip" >> /root/down.txt
fi
Erledigt 6. Lesen Sie die Anzahl der Zeilen in der Datei und lesen Sie sie Zeile für Zeile in einer Schleife Beispiel: cat http www.baidu.com www.cityhouse.cn www.cityre.cn
vim httpttp.sh
cat /data/script/http | während Zeile lesen
Tun
curl $zeile
Erledigt
Datum = `Datum "+%Y-%m-%d-%H-%M-%S"`
echo "erfolgreich$datum" >> /data/script/http.txt Dies ist das Ende dieses Artikels über häufig verwendete Shell-Skriptbefehle und zugehöriges Wissen unter Linux. Weitere relevante Shell-Skriptbefehle unter Linux finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:- So erhalten Sie die lokale IP-Adresse im Linux-Shell-Skript
- So legen Sie das feste Format am Anfang eines Shell-Skripts in Linux fest
- Linux verwendet Shell-Skripte, um historische Protokolldateien regelmäßig zu löschen
|