Eine detaillierte Einführung in die Grundlagen des Linux-Scriptings

Eine detaillierte Einführung in die Grundlagen des Linux-Scriptings

1. Skript-Vim-Umgebung

Im Skript müssen normalerweise einige Skriptinformationen angezeigt werden. Diese Informationen können automatisch angezeigt werden, indem vim eingestellt wird
/etc/vimrc Diese Datei ist die Hauptkonfigurationsdatei von vim. Der Inhalt der Datei ist global wirksam. ~/.vimrc Diese Datei ist eine Unterdatei von vim. Sie kann auch durch Bearbeiten der Konfigurationsdatei von vim im Home-Verzeichnis des Benutzers gesteuert werden, dies ist jedoch nur für den aktuellen Benutzer wirksam.
vim ~/.vimrc Bearbeiten Sie die Konfigurationsdatei

Die Bedeutung der Konfigurationsinformationen:

set nu zeigt die Zeilennummer
ts=2 bedeutet, dass die Tabulatortaste 2 Leerzeichen entspricht
et Wandeln Sie die Tabulatortaste in ein Leerzeichen um
ai gibt die Einrückung an func ist die Markierung für den Funktionstyp endfunc ist die Markierung für das Funktionsende call gibt den Aufruf an append gibt das Hinzufügen von Anweisungen an (0 gibt die erste Zeile an, und der hinzugefügte Inhalt wird mit "" zitiert)
autocmd legt die Funktion WESTOS() so fest, dass sie automatisch aufgerufen wird, wenn eine neue Datei mit der Endung .sh oder .script erstellt wird.
strftime bedeutet, dass die Aufnahmezeit automatisch ermittelt und im Format Jahr/Monat/Tag ausgegeben wird
!/bin/bash magische Zahl; der erste Befehl, der ausgeführt wird, wenn das Skript ausgeführt wird, normalerweise andere angegebene Ausführungsumgebungen im Skript

  setze nu ts=2 und ai
  
  autocmd BufNewFile *.sh,*.script rufe SHELLTITLE() auf
   Funktion SHELLTITLE()
    Aufruf von Anhängen (0, "###########################################")
    Rufen Sie Anhängen auf(1,"# Autor: lee")
    call append(2,"# Version: 1.0")
    rufe Anhängen auf (3, "# Erstellzeit: ".strftime("%Y/%m/%d"))
    call append(4,"# Mail: [email protected]")
    rufe anhängen auf(5,"# Info: ")
    rufe anhängen(6,"#")
    rufe anhängen(7,"#")
    Rufen Sie Anhängen auf (8, "##########################################")
    rufe append(9,"") auf
    rufe Anhängen auf (10, "#!/bin/bash")
  Endfunktion

Wie in der Abbildung gezeigt:

Skriptübung:
(1). Erstellen Sie ein Skript ip_show.sh, damit die IP-Adresse der Netzwerkkarte nach der Eingabe der Netzwerkkarte angezeigt werden kann und eine leere Eingabeaufforderung angezeigt wird

#!/bin/bash
[ -z "$1" ] && {
   echo "Fehler: Bitte geben Sie die Schnittstelle gemäß Skript ein!!"
   Ausfahrt
   }
ifconfig $1 | awk '/\<inet\>/{print $2}'

Der Effekt ist wie unten dargestellt:

(2). Erstellen Sie host_messages.sh, um den Namen des aktuellen Hosts und die IP-Adresse des Benutzers anzuzeigen, der sich beim aktuellen Host angemeldet hat.
Hostname:
IP-Adresse:
Benutzername:

#!/bin/bash
  echo "Hostname: `Hostname`"
  echo "ipaddress: `ifconfig ens3 | awk '/\<inet\>/{print $2}'`"
  echo "Benutzername: $USER"

!!!Beachten Sie den Unterschied zwischen einfachen Anführungszeichen und umgekehrten Anführungszeichen. Einfache Anführungszeichen '' sind schwache Anführungszeichen und können nicht zitieren \ ` $ !; Umgekehrte Anführungszeichen `` sind starke Anführungszeichen und können alle zitieren

(3) Erstellen Sie clear_log.sh, um das Skript zum Löschen des Protokolls auszuführen

#!/bin/bash
[ "$USER" != "root" ] && {
  echo "Bitte führen Sie $0 mit Root aus!!!"
  Ausfahrt
  }
[ ! -e "/var/log/nachrichten" ] && {
  echo "Keine Logdatei hier!!!"
  Ausfahrt
}
> /var/log/messages && {
  Echo-Logdatei wurde gelöscht!!!
  Ausfahrt
}

2. So definieren Sie die Umgebung in Shell-Skripten

Umweltniveau
Exportiere a=1
Die Variable verschwindet, nachdem die Umgebung geschlossen wurde.
Benutzerebene
vim ~/.bash_profile Konfigurationsdatei für Benutzerumgebungsvariablen
Exportiere a=1
Ungültig nach Benutzerwechsel
Systemebene
vim /etc/profile Hauptkonfigurationsdatei
Exportiere a=2
vim /etc/profile.d/westos.sh Unterkonfigurationsdatei
Export b=3
Nachdem diese Variable gesetzt wurde, können alle Benutzer im System

Bei Verwendung des durch den Shell-Befehl „export a=1“ angegebenen Variablenwertes ist dieser im Skript nicht erkennbar, da beide nicht in der gleichen Shell geöffnet werden.
Daher können Sie die erforderlichen Variablen in der Variablenkonfigurationsdatei source ~/.bash_profile bearbeiten, um die aktuellen Änderungen wirksam zu machen
vim ~/.bash_profile Konfigurationsdatei für Benutzerumgebungsvariablen Die Konfigurationsdatei für Benutzerumgebungsvariablen ist nur für den Benutzer gültig, auf den sie gesetzt ist. Die Variable wird nach dem Benutzerwechsel ungültig, da Sie nach dem Benutzerwechsel beim Öffnen der Shell die .bash_profile in Ihrem Home-Verzeichnis lesen.
vim /etc/profile Konfigurationsdatei für Umgebungsvariablen auf Systemebene (Informationen in dieser Konfigurationsdatei werden im Allgemeinen nicht mehr bearbeitet)
vim /etc/profile.d/westos.sh Umgebungsvariable auf Systemebene, benutzerdefinierte Unterkonfigurationsdatei (benutzerdefinierter Name, existiert ursprünglich nicht) Quelle
Die Datei /etc/profile.d/westos.sh wird wirksam. Nachdem die Variablen im Unterprofil festgelegt wurden, können alle Benutzer im System es verwenden.

3. Übersetzte Zeichen in Shell-Skripten

Übersetzen Sie ein einzelnes Zeichen: \
Stapelübersetzungszeichen: '' ""
'' Einfache Anführungszeichen sind schwache Anführungszeichen und können nicht in Anführungszeichen gesetzt werden \ ` $ !
`` Backeinfache Anführungszeichen sind starke Anführungszeichen, die alle zitieren können

4. Variablen-Arrays in Skripten

a = (1 2 3 4 5)
echo ${a[0]} zeigt das erste Element an
echo ${a[-1]} zeigt das letzte Element an
echo ${a[@]:0:3} beginnt beim ersten Element und zeigt insgesamt 3 Elemente an
echo ${a[@]:2:3} beginnt beim zweiten Element und zeigt 3 Elemente an
echo ${#a[@]} zeigt alle Elemente an
echo ${#a[*]} zeigt alle Elemente an
unset a löscht das Array
unset a[0] löscht das angegebene Element

5. Alias-Einstellungen für Systembefehle

alias xie='vim' # Temporäre Einstellung zum Ausschalten von Shell-Fehlern

vim ~/.bashrc #Konfigurationsdatei auf Benutzerebene
Alias ​​xie='vim'
source ~/.bashrc #Die Datei ist nur für den aktuellen Benutzer gültig und wird nach einem Benutzerwechsel ungültig

vim /etc/bashrc #Systemebene
Alias ​​xie='vim'
source ~/.bashrc #Die Datei ist für alle Benutzer des Systems gültig

So entfernen Sie einen Alias:
Nach dem Löschen des Inhalts der Systemkonfigurationsdatei
unalias xie #Löschen Sie den Alias ​​in der aktuellen Umgebung

6. Parameterübergabe in Skripten

Nicht-interaktiver Modus:
sh /mnt/test.sh WestOS Linux Redhat
$0 ist /mnt/test.sh #das Skript selbst
$1 ist Westos #Die erste Zeichenfolge, die nach dem Skript eingegeben wird
$2 ist Linux #Die zweite Zeichenfolge
$3 ist Redhat #Die dritte Zeichenfolge
$* ist Westos Linux Redhat #Alle Zeichen, die nach dem Skript „Westos Linux Redhat“ eingegeben wurden
$@ ist Westos Linux Redhat #Alle nach dem Skript „Westos“ „Linux“ „Redhat“ eingegebenen Zeichen
$# ist 3 #Die Anzahl der eingegebenen Zeichenfolgen

Interaktiver Modus:
read -p wechselt in den interaktiven Modus; WORD stellt eine Variable dar

#!/bin/bash
read -p "Bitte Wort eingeben:" WORT
echo $WORT

Der Effekt ist wie unten dargestellt:

-s bedeutet, das eingegebene WORT auszublenden

#!/bin/bash
read -p "Bitte Wort eingeben:" -s WORT
echo $WORT

Beim Betreten treten versteckte Effekte auf.

Wie in der Abbildung gezeigt:

Skriptübung:
Schreiben Sie ein Skript, das einen neuen Benutzer erstellen kann und Sie daran erinnert, wenn der Benutzer bereits existiert, und Sie auffordert, das Kennwort des neuen Benutzers einzugeben, wenn es noch nicht existiert.

  #!/bin/bash
  [ -z $1 ] && {
    echo "Bitte geben Sie den Benutzernamen ein: !!" 
    Ausfahrt
    }
    Ich würde $1 &> /dev/null && {
    echo "$1 ist Ausgang !!"
  }||{
    Benutzeradd $1 &> /dev/null
    read -p "Bitte geben Sie das Benutzerpasswort ein: " -s PASS
    Echo " "
   echo $PASS |passwd --stdin $1 &> /dev/null && {
    echo "Benutzer erfolgreich erstellt!!"
      }
  }

Der Effekt ist wie unten dargestellt:

7. Loop-Funktion im Skript

#!/bin/bash
ECHO()
{
 [ "$WORD" = "beenden" -o "$WORD" = "BEENDEN" ] && {
    Echo, tschüss 
    Ausfahrt
  }
    read -p "Bitte geben Sie das Wort ein:" WORT
    echo $WORT
    ECHO
}
ECHO

Funktionen können dazu führen, dass Skriptaktionen in einer Schleife ausgeführt werden.

Der Effekt ist wie unten dargestellt:

Skriptübung:
Schreiben Sie ein Loop-Skript, das Dateitypen erkennen kann. Wenn die Datei nicht existiert, wird angezeigt, dass die Datei nicht existiert. Wenn sie existiert, wird der Dateityp ausgegeben. Beim Eingeben von exit wird bye ausgegeben, um das Skript zu beenden

#!/bin/bash
DATEI()
{
  [ $1 "$DATEINAME" ] && {
  echo $FILENAME ist "$2"
  Echo ""
  überprüfen
  }
}
überprüfen()
{

  read -p "Bitte geben Sie den Dateinamen ein:" DATEINAME
  [ "$FILENAME" = "beenden" ] && {
  Echo, tschüss
  Ausfahrt
  }
  DATEI "! -e" "nicht gefunden"
  FILE -L "Datei verknüpfen"
  DATEI -f "gemeinsame Datei"
  DATEI -d "Verzeichnis"
  DATEI -S "Buchse"
  DATEI -b "Blockdatei"
  DATEI -c "cahr-Datei"
  überprüfen
  }
überprüfen

Der Effekt ist wie unten dargestellt:

Skriptübung 2:
Schreiben Sie ein Skript, das in einer Schleife Benutzer erstellt. Wenn der Benutzer existiert, lautet die Ausgabeinformation, dass der Benutzer bereits existiert. Wenn er nicht existiert, wird ein neuer Benutzer erstellt und ein Passwort eingegeben. Das Passwort wird bei der Eingabe ausgeblendet und es wird angezeigt, dass der Benutzer erstellt wurde. Und fordern Sie weiterhin zur Eingabe des Benutzernamens auf, um den nächsten Benutzer zu erstellen, bis Sie aktiv beenden

#!/bin/bash
Benutzer erstellen()
{

  read -p "Bitte geben Sie den Benutzernamen ein: " USER
  Echo ""
  [ "$USER" = "beenden" ] && {
  Echo, tschüss
  Ausfahrt
  }
  
  Ich würde $USER &> /dev/null && {
  echo "$USER wird beendet!!"
  Benutzer erstellen
}||{
  Benutzer hinzufügen $USER  
  read -p "Bitte geben Sie das Passwort ein:" -s PASS
  Echo ""
  echo $PASS |passwd --stdin $USER &> /dev/null && {
  Echo ""
  echo $USER wird erstellt!!
  }
  
  }
  Benutzer erstellen
}
Benutzer erstellen

Der Effekt ist wie unten dargestellt:

Dies ist das Ende dieses Artikels über die detaillierte Einführung in die Grundlagen von Linux-Skripten. Weitere relevante Inhalte zu den Grundlagen von Linux-Skripten 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:
  • Überwachung sowie Betrieb und Wartung von Linux-Diensten
  • Einführung in die Containerfunktion of() in der Linux-Kernel-Programmierung
  • Implementierungsschritte zum Entwickeln von Linux C++-Programmen in VS2019
  • Linux Advanced Learning Manual (Teil 2)
  • Linux Advanced Learning Manual (Teil 1)
  • Lernhandbuch - Linux-Grundlagen
  • Detaillierte Erläuterung der häufig verwendeten Funktionen copy_from_user open read write in der Linux-Treiberentwicklung

<<:  Detaillierte Erklärung der Ursachen und Lösungen von Konflikten zwischen Filtern und festen

>>:  MySQL Series 10 MySQL-Transaktionsisolierung zur Implementierung der Parallelitätskontrolle

Artikel empfehlen

Detailliertes Tutorial zum Kompilieren und Installieren von Python3.6 unter Linux

1. Gehen Sie zunächst auf die offizielle Website ...

Select unterstützt kein Doppelklick-DBClick-Ereignis

XML/HTML-CodeInhalt in die Zwischenablage kopiere...

Bootstrap 3.0 Studiennotizen CSS-bezogene Ergänzung

Die wesentlichen Inhalte dieses Artikels sind wie...

Lösung für den Fehler beim Aufruf von Yum im Docker-Container

Beim Ausführen von yum im Dockerfile oder im Cont...

Über das WeChat Mini-Programm zur Implementierung von Cloud-Zahlungen

Inhaltsverzeichnis 1. Einleitung 2. Gedankenanaly...

Docker-Grundlagen-Tutorial: Detaillierte Erklärung der Dockerfile-Syntax

Vorwort Dockerfile ist ein vom Docker-Programm in...

Verwendung von Vue-Filtern und benutzerdefinierten Anweisungen

Inhaltsverzeichnis Filter 01.Was ist 02. Wie es g...

Die Verknüpfungsmethode zwischen Menü und Registerkarte von vue+iview

Vue+iview-Menü und Tab-Verknüpfung Ich entwickle ...

So überprüfen Sie die Festplattennutzung unter Linux

1. Verwenden Sie den Befehl df, um die gesamte Fe...

CSS+HTML zur Realisierung der Funktion der oberen Navigationsleiste

Implementierungseffektdiagramm für die Navigation...

Centos7 installiert mysql5.6.29 Shell-Skript

In diesem Artikel wird das Shell-Skript von mysql...