Maison >Opération et maintenance >exploitation et maintenance Linux >Introduction et utilisation de la syntaxe de base du shell
1. Variables
1. Règles de dénomination des variables : commencez par une lettre ou un trait de soulignement, suivi de chiffres, de lettres ou de traits de soulignement. Il est préférable de ne pas nommer la variable avec désinvolture, mais de pouvoir la deviner. sa signification lorsque vous voyez le nom de la variable.
2. Attribuez des variables :
[root@bogon ~]# egon_salary=20000
[root@bogon ~]# echo ${egon_salary. }yuan20000yuan
4. Il n'est pas nécessaire de déclarer les types de données dans bash , la valeur par défaut est le type de caractère
2. Opérateurs
1. + - * / %
[root@bogon ~]# echo $[5 %2]
12 Opérateurs d'affectation : =, +=, -=, *=. , /=, %=[root@bogon ~]# x= 10[root@bogon ~]# ((x+=1))
[root@bogon ~]# echo $x
les opérateurs relationnels sont souvent utilisé avec (( )), [] peut obtenir le même résultat, mais (( ) ) ne peut pas déterminer le type d'un fichier. Vous devez utiliser [] pour déterminer le type de fichier. [] a le même effet que la commande test.
Utilisez $? pour afficher le résultat de l'exécution de la commande. Le résultat est 0 pour vrai et non-0 pour faux
[root@bogon ~]# x=10
[root. @bogon ~]# ((x>=8))[root@bogon ~]# echo $?
0Calculatrice en shell
Je l'ai déjà dit. que vous pouvez utiliser $[] pour effectuer quelques opérations simples, mais s'il s'agit d'opérations décimales, vous devez utiliser des calculs dans le shell
Tout d'abord, vous devez installer le logiciel, yum install -y bc
[root@bogon ~]# res=$(echo 'scale=2;1/3' |bc -l | cut -d'.' -f2)
[root@bogon ~] # echo ${res}%33%
5.test commande test
test
-n str La longueur de la chaîne n'est pas nulle
-z str La longueur de la chaîne est nulle
-b Le fichier existe et est un fichier bloc
-d Fichier -e le fichier existe et est un fichier répertoire
- Le fichier f existe et est un fichier normal
Le fichier -h existe et est un fichier de lien (identique à -L)
Le fichier -s existe et est supérieur à zéro octet
Comparaison entre les fichiers
file1 -nt file2 file1 a été créé après file2
file1 -ot file2 file1 a été créé avant file2
Comparaison entre entiers
int1 -ne int2 int1 et int2 ne sont pas égaux
int1 -eq int2 int1 et int2 sont égaux
int1 -lt int2 int1 est inférieur à int2
int1 -le int2 int1 est inférieur ou égal à int2
int1 -gt int2 int1 est supérieur à int2
int1 -ge int2 int1 est supérieur à Égal à int2
Comparaison entre les chaînes
str1 = str2 str1 et str2 sont égaux
str1 ! =str2 str1 et str2 ne sont pas égaux
Comparaison entre expressions
Expression1 -a expression2 L'expression 1 et l'expression 2 sont toutes deux vraies
expression1 -o expression2 expression Formule 1 ou Expression 2 est vrai
6. Exemples de tests
Test de comparaison numérique :
Test de chaîne[root@bogon ~]# [[ 2 > 1 ]][root@bogon ~]# echo $?0 [root@bogon ~]# ((20>10))[root@bogon ~]# echo $?0 [root@bogon ~]# ((20<10))[root@bogon ~]# echo $?1
[root@bogon ~]# [ "abc" = "abc" ][root@bogon ~]# echo $?0 [root@bogon ~]# [[ "abc" = "abc" ]][root@bogon ~]# echo $?0 [root@bogon ~]# (("abc" = "abc"))[root@bogon ~]# echo $?1Pour comparer simplement des nombres, utilisez (( ))
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0 [root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
[root@bogon ~]# (( a = a || 1 > 2 ))[root@bogon ~]# echo $?1[root@bogon ~]# [[ a = a || 1 > 2 ]][root@bogon ~]# echo $?0
1 ) Vérifiez le mot de passe du compte utilisateur :
2) Déterminer la note
input your name : zhangcan input password : 123login successful [root@bogon ~]# ./usertest.sh input your name : hha input password : hag user or password error
#! /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~
#!/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 '较差'ficommande
done
Exemple : Déterminer l'entrée de l'utilisateur Quel type de fichier est
3. boucle for for i in {1..10} #in ne doit pas nécessairement être suivi d'un nombre, tant qu'il y en a Toutes les commandes qui renvoient des résultats peuvent faire echo $i#!/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"fidone
Exemple 1 : Écrivez un script pour tester les IP pouvant être utilisées dans le sous-réseau
Exemple 2 : Comptez le nombre de chaque type de fichier sous /devBoucles imbriquées
#!/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~
#!/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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!