Heim > Betrieb und Instandhaltung > Betrieb und Wartung von Linux > Einführung und Verwendung der grundlegenden Shell-Syntax

Einführung und Verwendung der grundlegenden Shell-Syntax

PHP中文网
Freigeben: 2017-06-20 11:24:48
Original
2015 Leute haben es durchsucht

1. Variablen

1. Benennungsregeln für Variablen: Beginnen Sie mit einem Buchstaben oder Unterstrich, gefolgt von Zahlen, Buchstaben oder Unterstrichen. Es ist am besten, die Variable nicht zufällig zu benennen, sondern sie zu erraten seine Bedeutung, wenn Sie den Variablennamen sehen:

[root@bogon ~]# egon_salary=20000

[root@bogon ~]# echo ${egon_salary }yuan

20000yuan

4 Es ist nicht erforderlich, Datentypen in Bash zu deklarieren, der Standardwert ist der Zeichentyp

2. Operatoren

1. + - * / %

[root@bogon ~]# echo $[5 %2]

1

2. Zuweisungsoperatoren: =, +=, -=, *= , /=, %=

[root@bogon ~]# x= 10

[root@bogon ~]# ((x+=1))

[root@bogon ~]# echo $x

11

3. Relationale Operatoren: <, >,!=,==,>=,<=,||,&

relationale Operatoren sind Wird oft mit (()) verwendet, kann [] das gleiche Ergebnis erzielen, aber (()) kann den Typ einer Datei nicht bestimmen. Sie müssen [] verwenden, um den Dateityp zu bestimmen, was den gleichen Effekt hat wie der Testbefehl


Verwenden Sie $?, um das Ergebnis der Befehlsausführung anzuzeigen.

[root@bogon ~]# x=10

[root @bogon ~]# ((x>=8))

[root@bogon ~]# echo $?

0

4. Rechner in der Shell

Ich sagte schon dass Sie $[] verwenden können, um einige einfache Operationen auszuführen, aber wenn es sich um Dezimaloperationen handelt, müssen Sie Berechnungen in der Shell verwenden


Zuerst müssen Sie die Software installieren, yum install -y bc

[root@bogon ~]# res=$(echo 'scale=2;1/3' |bc -l | cut -d'.' -f2)

[root@bogon ~] # echo ${res}%

33%

5.test command test

test

-n str Die Stringlänge ist nicht Null

-z str Die Zeichenfolgenlänge ist Null

-b Die Datei existiert und ist eine Blockdatei

-d Datei -e Datei existiert und ist eine Verzeichnisdatei

- f-Datei existiert und ist eine normale Datei

-h-Datei existiert und ist eine Linkdatei (dasselbe wie -L)

-s-Datei existiert und ist größer als null Bytes

Vergleich zwischen Dateien

Datei1 -nt Datei2 Datei1 wurde später als Datei2 erstellt

Datei1 -ot Datei2 Datei1 wurde früher als Datei2 erstellt

Vergleich zwischen ganzen Zahlen

int1 -ne int2 int1 und int2 sind nicht gleich

int1 -eq int2 int1 und int2 sind gleich

 int1 -lt int2 int1 ist kleiner als int2

 int1 -le int2 int1 ist kleiner oder gleich int2

 int1 -gt int2 int1 ist größer als int2

 int1 -ge int2 int1 ist größer als gleich int2

Vergleich zwischen Zeichenfolgen

str1 = str2 str1 und str2 sind gleich

str1! =str2 str1 und str2 sind nicht gleich

Vergleich zwischen Ausdrücken

Ausdruck1 -a Ausdruck2 Sowohl Ausdruck 1 als auch Ausdruck 2 sind wahr

Ausdruck1 -o Ausdruck2 Ausdruck Formel 1 oder Ausdruck 2 ist wahr

6. Testbeispiele

Numerischer Vergleichstest:

Stringtest

[root@bogon ~]# [[ 2 > 1 ]][root@bogon ~]# echo $?0
[root@bogon ~]# ((20>10))[root@bogon ~]# echo $?0
[root@bogon ~]# ((20<10))[root@bogon ~]# echo $?1
Nach dem Login kopieren

Um Zahlen einfach zu vergleichen, verwenden Sie (( ))
[root@bogon ~]# [ "abc" = "abc" ][root@bogon ~]# echo $?0
[root@bogon ~]# [[ "abc" = "abc" ]][root@bogon ~]# echo $?0
[root@bogon ~]# (("abc" = "abc"))[root@bogon ~]# echo $?1
Nach dem Login kopieren
Außer bei einfachen Zahlen Verwenden Sie zum Vergleichen [[ ] ]
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
Nach dem Login kopieren
3. Prozesssteuerung
[root@bogon ~]# (( a = a || 1 > 2 ))[root@bogon ~]# echo $?1[root@bogon ~]# [[ a = a || 1 > 2 ]][root@bogon ~]# echo $?0
Nach dem Login kopieren
1.if-Zweig

 1 ) Benutzerkonto-Passwort überprüfen:

2) Bestimmen Sie die Klassenstufe

input your name : zhangcan
input password : 123login successful
[root@bogon ~]# ./usertest.sh input your name : hha
input password : hag
user or password error
Nach dem Login kopieren
2 Schleife
while (Bedingung)
#! /bin/bashuser='zhangcan'password='123'read -p 'input your name : ' name
read -p 'input password : ' codeif [ $name = $user -a $code = $password ];then
        echo 'login successful'elseecho 'user or password error'fi~
Nach dem Login kopieren
do

Befehl
#!/bin/bash #根据用户输入的成绩,判断所属档次,并输出给用户read -p 'input your score : ' scoreif  [ $score -ge 90 ];then
    echo '优秀'elif [ $score -ge 70 -a $score -lt 90 ];then
    echo '良好'elif [ $score -ge 60 -a $score -lt 70 ];then
    echo '及格'elif [ $score -lt 60 ];then
    echo '较差'fi
Nach dem Login kopieren
done

Beispiel: Bestimmen Sie die Benutzereingabe. Welcher Dateityp ist

3. for-Schleife

 for i in {1..10} #in muss nicht unbedingt von einer Zahl gefolgt werden, sofern vorhanden ist Alle Befehle, die Ergebnisse zurückgeben, können

echo $i

done
#!/bin/bashwhile :
do
    read -p 'input your file : ' fileif [ -z $file ];thencontinueelsebreakfi
doneif [ -f $file ];then
    echo "$file is regular file"elif [ -b $file ];then
    echo "$file is block file"elif [ -d $file ];then
    echo "$file is directory file"elseecho "$file type unkonw"fi
Nach dem Login kopieren
Beispiel 1: Schreiben Sie ein Skript, um die IPs zu testen, die im Subnetz verwendet werden können

Beispiel 2: Zählen Sie die Anzahl jedes Dateityps unter /dev

4. Verschachtelte Schleifen

Beispiel 1: Ausgabe einer Multiplikationstabelle

#!/bin/bashfor i in {1..50}
do
    ping -c1 192.168.16.$i &> /dev/null  # -c1表示ping一次if [ $? -ne 0 ];then
        echo "192.168.16.$i successful"echo "192.168.16.$i" >> ~/ipavailable.txt
    fi
done~
Nach dem Login kopieren

Beispiel 2: Überprüfen Sie das Anmeldekonto und das Passwort des Benutzers. Nach erfolgreicher Anmeldung können Sie den Befehl ausführen und beenden, wenn Sie quit eingeben

#!/bin/bashdir='/dev'for i in $(ls $dir)
doif [ -h $dir/$i ];then
        ((link+=1))elif [ -f $dir/$i ];then
        (( rfile+=1))elif [ -d $dir/$i ];then
        ((directory+=1))elif [ -b $dir/$i ];then
        (( block+=1 ))else(( typeunknow+=1))
    fi
done
echo 'block' $block
echo 'regular file' $rfile
echo 'directory' $directory
echo 'link' $link
echo 'unknow' $typeunknow
Nach dem Login kopieren

     

Das obige ist der detaillierte Inhalt vonEinführung und Verwendung der grundlegenden Shell-Syntax. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage