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中文网
PHP中文网Original
2017-06-20 11:24:481976Durchsuche

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

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
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
3. Prozesssteuerung
[root@bogon ~]# (( a = a || 1 > 2 ))[root@bogon ~]# echo $?1[root@bogon ~]# [[ a = a || 1 > 2 ]][root@bogon ~]# echo $?0
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
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~
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
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
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~

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

     

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!

Stellungnahme:
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