le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
if command
then
command
fi
if
Le istruzioni sono diverse da altri linguaggi di programmazione, bashif
La dichiarazione saràCorri direttamenteif
I seguenti comandi
fi
Terminare il controllo logicoif command
then
command
else
command
fi
if command
then
command
elif command
then
command
fi
if-else
ramocase "变量" 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
Sintassi comunemente utilizzata per i test condizionali
Operatori di test di stringa comunemente utilizzati
confronto numerico
Operatori logici
Tabella comparativa di ogni comando
test
La definizione più breve di comando potrebbe essereValutare un'espressione
$?
valoreInformazioni sul nome di un filerilevamento del tipo(esiste o no), come ad esempio:test -e filename
parametro | significato |
---|---|
-e | Il nome del file esiste? |
-f | Il nome del file è un file (file ) |
-d | Se il nome del file è una directory (directory ) |
-b | Nome del fileblock device dispositivo |
-c | Il nome del file è acharacter device dispositivo |
-S | Il nome del file è aSocket documento |
-p | Indica se il nome del file è un file FIFO (pila). |
-L | Se il nome del file è un file di connessione |
sui fileRilevamento dei permessi,Piace:test -r filename
parametro | significato |
---|---|
-r | Il nome del file haleggibileproprietà |
-w | Il nome del file hascrivibileproprietà |
-x | Il nome del file haEseguibileproprietà |
-u | Il nome del file haSUIDproprietà |
-g | Il nome del file haSGIDproprietà |
-k | Il nome del file haUn po' appiccicosoproprietà |
-s | Nome del filefile non vuoto |
DiConfronto tra due file,Piace:test file1 -nt file2
parametro | significato |
---|---|
-nt | (più recente di), giudicefile1 È meglio difile2 nuovo |
-ot | (più vecchio di), giudicefile1 È meglio difile2 vecchio |
-ef | giudicefile1 Efile2 Se si tratta dello stesso file, può essere utilizzato incollegamento difficilesulla sentenza diIl significato principale è determinare se i due file puntano allo stesso inode |
DiDeterminazione tra due numeri interi,Piace:test num1 -eq num2
parametro | significato |
---|---|
-eq | Due numeri sono uguali |
-ne | Due numeri non sono uguali |
-gt | num1 più delnum2 |
-lt | num1 meno dinum2 |
-ge | num1 maggiore o uguale anum2 |
-le | num1 minore o uguale anum2 |
determinazionedati di stringa
parametro | significato |
---|---|
-z | Se è una stringa vuota, ritornatrue |
-n | Se non è una stringa vuota, alloratrue |
= | str1 == str2 , quindi tornaretrue |
!= | str1 != str2 , quindi tornaretrue |
Giudizio condizionale multiplo,Piace:test -r filename -a -x filename
parametro | significato |
---|---|
-a | (e) Entrambe le situazioni vengono stabilite contemporaneamente |
-o | (o) una delle due situazioni è vera |
! | negazione logica |
[]
test
E[]
L'effetto è lo stesso[]
Due simboli devono essere separati da spazi a sinistra e a destra[ "a" = "b" ]
> <
È necessario scrivere come> /<
fuga[]
corda media o${}
Usa le variabili il più possibile""
Racchiuso tra virgolette doppie per evitare riferimenti non definiti a valori[ -n "$filename" ]
[]
Può essere utilizzato in-a -o
Esegui operazioni logiche, non supportate&& ||
[]
è un comando integrato in bash[[]]
Due simboli devono essere separati da spazi a sinistra e a destra[[ "a" = "b" ]]
> <
, non c'è bisogno di scappare[[]]
corda media o${}
Usa le variabili il più possibile""
racchiuso tra virgolette doppie ""
Se racchiuso tra virgolette doppie, verrà eseguita la corrispondenza di pattern e metacaratteri.[[]]
Può essere utilizzato internamente&& ||
Eseguire operazioni logiche[[]]
È la parola chiave di bash[[]]
Altri usi sono gli stessi di[]
Stesso#!/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
grammatica: Quitest command
Eif-else
Il formato dell'istruzione è lo stesso e puoi utilizzare qualsiasi comando bash
while
Ditest command
Il codice dello stato di uscita deve cambiare con il comando nel ciclo Altrimenti, se il codice dello stato non cambia, il ciclo continuerà continuamente.while test command
do
commands
done
while
OrdineÈ possibile scrivere più comandi di test
var1=10
while echo $var1
[ $var1 -ge 0 ]
do
echo "This is inside the loop"
var1=$[ $var1 -1 ]
done
until
Ewhile
SÌsignificato opposto,until
Il comando richiede di specificare aTestare i comandi che restituiscono codici di uscita diversi da zero
until test commands
do
other commands
done
until
AncheSupporta più comandi di test, solo l'ultimo determina se bash esegue altri comandiuntil echo $var1
[ $var1 -eq 0 ]
do
echo "Inside the loop:$var1"
var1=$[ $var1 - 25 ]
done
break
Terminerà automaticamente la maggior parte del loop di memoria in cui si trovan
Indica il livello del loop da cui uscire. Il valore predefinito è 1 e il livello successivo è 2.break n
for (( a = 1;a<10;a++ ))
do
echo "The number is $a"
done > test.txt
echo "Finished"