τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
if command
then
command
fi
if
Οι δηλώσεις είναι διαφορετικές από άλλες γλώσσες προγραμματισμού, τις bashif
Δήλωση θαΕκτελέστε απευθείαςif
Οι παρακάτω εντολές
fi
Τέλος λογικού ελέγχουif command
then
command
else
command
fi
if command
then
command
elif command
then
command
fi
if-else
κλαδίcase "变量" in
值1)
命令
;;
值2)
命令2
;;
*)
命令
#!/bin/bash
FreeMem=`free -m | awk 'NR==2 {print $NF}'`
CHARS="Current memory is $FreeMem"
if [ "$FreeMem" -lt 16000 ]
then
echo $CHARS
echo "内存不足,抓紧维护服务器!"
fi
#!/bin/bash
a=$1
b=$2
if [ $a -lt $b ]
then
echo "Yes, $a less than $b"
exit 0
fi
if [ $a -eq $b ]
then
echo "Yes, $a equal $b"
exit 0
fi
if [ $a -gt $b ]
then
echo "Yes, $a greater than $b"
exit 0
fi
#!/bin/bash
a=$1
b=$2
if [ $a -lt $b ]
then
echo "Yes, $a less than $b"
exit 0
elif [ $a -eq $b ]
then
echo "Yes, $a equal $b"
exit 0
else [ $a -gt $b ]
echo "Yes, $a greater than $b"
exit 0
fi
#!/bin/bash
if [ `netstat -tunlp | grep mysql | wc -l` -ge "1" ]
then
echo "MySQL is running"
else
echo "MySQL is stopped"
# systemctl start mysql.service
fi
#!/bin/bash
if [ "$#" -ne 1 ]
then
echo "Usage: $0 {start|stop|restart}"
exit 1
fi
if [ "$1" = "start" ]
then
/usr/bin/rsync --daemon
sleep 2
if [ `netstat -tunlp | grep rsync | wc -l` -ge 1 ]
then
echo "Rsync is started"
exit 0
fi
elif [ "$1" = "stop" ]
then
killall rsync &>/dev/null
sleep 2
if [ `netstat -tunlp | grep rsync | wc -l` -eq 0 ]
then
echo "Rsync is stopped"
exit 0
fi
elif [ "$1" = "restart" ]
then
kill rsync
sleep 1
killpro=`netstat -tunlp | grep rsync | wc -l`
/usr/bin/rsync --daemon
sleep 1
startpro=`netstat -tunlp | grep rsync | wc -l`
if [ "$killpro" -eq 0 -a "$startpro" -ge 1 ]
then
echo "Rsync is restarted"
exit 0
fi
else
echo "Usage: $0 {start|stop|restart}"
exit 1
fi
Συντακτικό που χρησιμοποιείται συνήθως για δοκιμές υπό όρους
Συχνά χρησιμοποιούμενοι τελεστές δοκιμής συμβολοσειρών
αριθμητική σύγκριση
Λογικοί τελεστές
Συγκριτικός πίνακας κάθε εντολής
test
Ο συντομότερος ορισμός μιας εντολής μπορεί να είναιΑξιολογήστε μια έκφραση
$?
αξίαΣχετικά με ένα όνομα αρχείουανίχνευση τύπου(υπάρχουν ή όχι), όπως:test -e filename
παράμετρος | σημασία |
---|---|
-e | Υπάρχει το όνομα αρχείου; |
-f | Είναι το όνομα αρχείου αρχείο (file ) |
-d | Εάν το όνομα αρχείου είναι κατάλογος (directory ) |
-b | Είναι το όνομα του αρχείουblock device συσκευή |
-c | Είναι το όνομα αρχείου acharacter device συσκευή |
-S | Είναι το όνομα αρχείου aSocket έγγραφο |
-p | Εάν το όνομα του αρχείου είναι αρχείο FIFO (σωρό). |
-L | Εάν το όνομα αρχείου είναι αρχείο σύνδεσης |
σχετικά με τα αρχείαΑνίχνευση άδειας,αρέσει:test -r filename
παράμετρος | σημασία |
---|---|
-r | Έχει το όνομα του αρχείουαναγνώσιμοςιδιότητες |
-w | Έχει το όνομα του αρχείουεγγράψιμοιδιότητες |
-x | Έχει το όνομα του αρχείουΕκτελέσιμαιδιότητες |
-u | Έχει το όνομα του αρχείουSUIDιδιότητες |
-g | Έχει το όνομα του αρχείουSGIDιδιότητες |
-k | Έχει το όνομα του αρχείουΚολλώδες κομμάτιιδιότητες |
-s | Είναι το όνομα του αρχείουμη κενό αρχείο |
σχετικά μεΣύγκριση μεταξύ δύο αρχείων,αρέσει:test file1 -nt file2
παράμετρος | σημασία |
---|---|
-nt | (νεότερο από), κρίνωfile1 Είναι καλύτερο απόfile2 νέος |
-ot | (παλιότερος από), κρίνωfile1 Είναι καλύτερο απόfile2 παλαιός |
-ef | δικαστήςfile1 καιfile2 Είτε πρόκειται για το ίδιο αρχείο, μπορεί να χρησιμοποιηθεί σεσκληρός σύνδεσμοςκατά την κρίση τουΗ κύρια σημασία είναι να καθοριστεί εάν τα δύο αρχεία δείχνουν το ίδιο inode |
σχετικά μεΠροσδιορισμός μεταξύ δύο ακεραίων,αρέσει:test num1 -eq num2
παράμετρος | σημασία |
---|---|
-eq | Δύο αριθμοί είναι ίσοι |
-ne | Δύο αριθμοί δεν είναι ίσοι |
-gt | num1 περισσότερο από τοnum2 |
-lt | num1 λιγότερο απόnum2 |
-ge | num1 μεγαλύτερο ή ίσο μεnum2 |
-le | num1 μικρότερο ή ίσο μεnum2 |
προσδιορισμόςδεδομένα συμβολοσειράς
παράμετρος | σημασία |
---|---|
-z | Εάν είναι κενή συμβολοσειρά, επιστρέψτεtrue |
-n | Αν δεν είναι κενή συμβολοσειρά, τότεtrue |
= | str1 == str2 , μετά επιστρέψτεtrue |
!= | str1 != str2 , μετά επιστρέψτεtrue |
Πολλαπλή υπό όρους κρίση,αρέσει:test -r filename -a -x filename
παράμετρος | σημασία |
---|---|
-a | (και) Και οι δύο καταστάσεις καθορίζονται ταυτόχρονα |
-o | (ή) οποιαδήποτε από τις δύο καταστάσεις είναι αληθής |
! | λογική άρνηση |
[]
test
και[]
Το αποτέλεσμα είναι το ίδιο[]
Δύο σύμβολα πρέπει να χωρίζονται με κενά αριστερά και δεξιά[ "a" = "b" ]
> <
Πρέπει να γραφτεί ως> /<
διαφυγή[]
μεσαία χορδή ή${}
Χρησιμοποιήστε μεταβλητές όσο το δυνατόν περισσότερο""
Περικλείεται σε διπλά εισαγωγικά για αποφυγή απροσδιόριστων παραπομπών σε τιμές[ -n "$filename" ]
[]
Μπορεί να χρησιμοποιηθεί σε-a -o
Εκτελέστε λογικές πράξεις, που δεν υποστηρίζονται&& ||
[]
είναι μια ενσωματωμένη εντολή bash[[]]
Δύο σύμβολα πρέπει να χωρίζονται με κενά αριστερά και δεξιά[[ "a" = "b" ]]
> <
, δεν χρειάζεται να ξεφύγεις[[]]
μεσαία χορδή ή${}
Χρησιμοποιήστε μεταβλητές όσο το δυνατόν περισσότερο""
περικλείεται σε διπλά εισαγωγικά ""
Εάν περικλείεται σε διπλά εισαγωγικά, θα γίνει αντιστοίχιση μοτίβου και μεταχαρακτήρα.[[]]
Μπορεί να χρησιμοποιηθεί εσωτερικά&& ||
Εκτελέστε λογικές πράξεις[[]]
Είναι η λέξη κλειδί του bash[[]]
Άλλες χρήσεις είναι οι ίδιες με[]
Ιδιο#!/bin/bash
read -p "Pls input a char:> " var1
[ "${var1}" -eq 1 ] && {
echo ${var1}
exit 0
}
[ "$var1" -eq 2 ] && {
echo $var1
exit 0
}
[ "$var1" -ne "1" -a "$var1" -ne "2" ] && {
echo "Script Error"
exit 1
}
#!/bin/bash
path=/scripts
[ ! -d "$path" ] && mkdir -p scripts
cat << END
1.[install lamp]
2.[install inmp]
3.[exit]
END
read -p "Pls input your choice:> " num
# 判断输入是否合法
[[ ! $num =~ [1-3] ]] && {
echo "The num you input must be in {1|2|3}"
echo "Input Error"
exit 1
}
[ $num -eq 1 ] && {
echo "start installing lamp...waiting..."
sleep 2
# 如果该脚本没权限
[ ! -x "$path/lamp.sh" ] || {
echo "The file does not exit or can't be exec"
exit 2
}
# 安装脚本
source ${path}/lamp.sh
exit $?
}
[ $num -eq 2 ] && {
echo "start installing lnmp...waiting..."
sleep 2
[ ! -x "$path/lnmp.sh" ] || {
echo "The file does not exit or can't be exec"
exit 3
}
source ${path}/lnmp.sh
exit $?
}
[ $num -eq 3 ] && {
echo "Bye~"
exit 4
}
for var in list
do
commands
done
for (( i=1;i<=10;i++ ))
do
echo "The next number is $i"
done
γραμματική: εδώtest command
καιif-else
Η μορφή της δήλωσης είναι η ίδια και μπορείτε να χρησιμοποιήσετε οποιαδήποτε εντολή bash
while
τουtest command
Ο κωδικός κατάστασης εξόδου πρέπει να αλλάξει με την εντολή στον βρόχο Διαφορετικά, εάν ο κωδικός κατάστασης δεν αλλάξει, ο βρόχος θα συνεχιστεί συνεχώς.while test command
do
commands
done
while
ΣειράΜπορούν να γραφτούν πολλαπλές εντολές δοκιμής
var1=10
while echo $var1
[ $var1 -ge 0 ]
do
echo "This is inside the loop"
var1=$[ $var1 -1 ]
done
until
καιwhile
Ναίαντίθετο νόημα,until
Η εντολή απαιτεί να καθορίσετε aΔοκιμή εντολών που επιστρέφουν μη μηδενικούς κωδικούς εξόδου
until test commands
do
other commands
done
until
επίσηςΥποστηρίζει πολλαπλές εντολές δοκιμής, μόνο το τελευταίο καθορίζει εάν το bash εκτελεί άλλες εντολέςuntil echo $var1
[ $var1 -eq 0 ]
do
echo "Inside the loop:$var1"
var1=$[ $var1 - 25 ]
done
break
Θα τερματίσει αυτόματα τον περισσότερο βρόχο μνήμης στον οποίο βρίσκεταιn
Υποδεικνύει το επίπεδο βρόχου από το οποίο πρέπει να βγείτε Η προεπιλογή είναι 1 και το επόμενο επίπεδο είναι 2.break n
for (( a = 1;a<10;a++ ))
do
echo "The number is $a"
done > test.txt
echo "Finished"