Répertoire d'articles
- Un: fonction shell
- Deux: tableau shell
-
- 2.1: Les scénarios d'application incluent
- 2.2: Description du tableau
- 2.3: Méthode de définition des tableaux
-
-
- 2.3.1: jusqu'à 100 tableaux
- 2.3.2: Créer des tableaux impairs de 1 à 100
- 2.3.3: Créez n'importe quel nombre et longueur, ajoutez des éléments en fonction des besoins du client
- 2.4.1: Obtenir la longueur du tableau et l'affectation des indices
- 2.4.2: L'ensemble de valeurs suivant, ajouter à 100 s'il est inférieur à 80
- 2.4.3: Trouver la valeur maximale du tableau
-
Un: fonction shell
L'essence de la fonction Shell est un morceau de code de script qui peut être réutilisé. Ce code est écrit à l'avance, placé à un emplacement désigné et peut être appelé directement lorsqu'il est utilisé.
Les fonctions de Shell sont similaires aux fonctions d'autres langages de programmation tels que C ++, Java, Python, C #, mais diffèrent dans les détails de la syntaxe.
Le format de la syntaxe de la définition de la fonction Shell est le suivant:
function name() {
#function是shell中的关键字,专门用来定义函数 name是函数名
statements #statements是函数要执行的代码,也就是一组语句;
[return value] #return value表示函数的返回值,其中return是shell关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。
} #由{ }包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。
1.1: Rédaction simplifiée de la définition des fonctions
Si vous trouvez cela gênant, vous pouvez omettre le mot-clé function lors de la définition de la fonction:
name() {
statements
[return value]
}
Si vous écrivez le mot-clé de la fonction, vous pouvez également omettre les parenthèses après le nom de la fonction:
function name {
statements
[return value]
}
Je recommande d'utiliser l'écriture standard afin que peu importe qui écrit ce script, vous puissiez le comprendre.
[root@localhost opt]#vim jia.sh
#!/bin/bash
sum () {
s=`expr 5 + 3`
echo $s
}
sum
[root@server1 ~]# sh a.sh
8
sum () {
s=`expr $1 + $2`
echo $s
}
sum 5 6
[root@server1 ~]# sh a.sh
11
在这里插入代码片
sum () {
return $(($1 + $2))
}
sum 3 4
echo $?
[root@server1 ~]# sh a.sh
7
function sum(){
#命令序列
read -p "请输入第一个整数: " num1
read -p "请输入第一个整数: " num2
SUM=$[$num1+$num2]
echo "和:$SUM"
}
sum
[root@server1 ~]# sh a.sh
请输入第一个整数: 5
请输入第一个整数: 4
和:9
function sum(){
#命令序列
read -p "请输入第一个整数: " num1
read -p "请输入第一个整数: " num2
SUM=$[$num1+$num2]
echo $SUM
}
tom=`sum 4 2`
let tom+=1
echo $tom
[root@server1 ~]# sh a.sh
请输入第一个整数: 6
请输入第一个整数: 3
10
1.2: La portée de la fonction
- Les fonctions des scripts Shell ne sont valides que dans l'environnement Shell actuel
- Les variables du script ShelI sont globalement efficaces par défaut
- Utilisez la commande locale pour limiter la variable à la fonction
Exemple
-
Les variables internes de la fonction sont implémentées par local
-
En définissant la fonction myfun, définissez la variable locale i à l'intérieur
-
Attribuer des valeurs à l'intérieur et à l'extérieur de la fonction pour vérifier les résultats
function sh(){
#命令序列
read -p "请输入第一个整数: " num1
read -p "请输入第一个整数: " num2
s=$[$num1+$num2]
jerry=20
echo 函数内$jerry
echo 和:$s
}
sh
echo 函数外$jerry
[root@server1 ~]# sh a.sh
请输入第一个整数: 2
请输入第一个整数: 3
函数内20
和:5
函数外20
local définit les variables globales
function sh(){
#命令序列
read -p "请输入第一个整数: " num1
read -p "请输入第一个整数: " num2
s=$[$num1+$num2]
local jerry=20 #local定义全局变量
echo 函数内$jerry
echo 和:$s
}
sh
echo 函数外$jerry
[root@server1 ~]# sh a.sh
请输入第一个整数: 2
请输入第一个整数: 4
函数内20
和:6
函数外
1.3: Fonction récursive
Appelez votre propre fonction
Exemple
Traversez récursivement le répertoire
Réalisez en définissant la fonction récursive list_files
#!/bin/bash
function list_files(){
for s in `ls $1`
do
if [ -d "$1/$s" ]
then
echo "$2$s"
list_files "$1/$s" "$2"
else
echo "$2$s"
fi
done
}
list_files "/var/log"
#$1表示/var/log
#$s表示/var/log下一个目录
#$2表示指定格式 子目录一定要做一个首行缩进
[root@server1 ~]# sh bianli.sh
amanda
anaconda
anaconda.log
ifcfg.log
journal.log
ks-script-j10KNj.log
ks-script-mW8ioG.log
packaging.log
program.log
……
Deux: tableau shell
2.1: Les scénarios d'application incluent
- Longueur du package de scénario d'application
- Obtenir la longueur du tableau
- Obtenir la longueur de l'élément
- Itérer sur les éléments
- Tranche d'élément
- Remplacement d'élément
- Suppression d'élément
- …
2.2: Description du tableau
Tableau: Mettez le même type de collecte de données. Il existe de nombreux
scénarios d'application: les notes et les noms des
camarades de classe [11,22,33,44] Ouvrez un espace continu dans la mémoire
Utilisez le
nom du tableau arr arr = (44) , 33,22,11)
Éléments du tableau: 44 33 22 11 sont tous
Longueur du tableau: arr a 4 éléments
Indice du tableau: 33 éléments sont inférieurs à 1 (par exemple, 11 indice est 3 22 indice est 2)
pour temporaire Scalar dans le tableau
ne
fait
2.3: Méthode de définition des tableaux
première méthode
数组名=(shuai0 shuai1 shuai2...)
Deuxième méthode
数组名=([0]=shuai [1]=shuai [3]=shuai...)
[root@server1 test]# num=([0]=44 [1]=33 [2]=22 [3]=11)
[root@server1 test]# echo ${num[*]}
44 33 22 11
Troisième méthode
列表名="shuai0 shuai1 shuai2.."
数组名= ($列表名)
[root@server1 test]# tom=" 1 2 3 4 "
[root@server1 test]# num=($tom)
[root@server1 test]# echo ${num[*]}
1 2 3 4
#!/bin/bash
list=`cat test.txt`
echo $list
[root@server1 test]# sh test.sh
5 6 7 8
#!/bin/bash
list=`cat test.txt`
f=($list)
echo ${
f[*]}
[root@server1 test]# sh test.sh
5 6 7 8
La troisième méthode est
souvent utilisée pour remplacer un élément
数组名[0]="shuai"
数组名[1]="shuai"
数组名[2]="shuai"
[root@server1 test]# num=([0]=2 [1]=5 [2]=6 [3]=8)
[root@server1 test]# echo ${num[*]}
2 5 6 8
[root@server1 test]# num[2]=10
[root@server1 test]# echo ${num[*]}
2 5 10 8
2.3.1: jusqu'à 100 tableaux
#!/bin/bash
for ((i=0;i<99;i++))
do
tom[$i]=$[$i+1]
done
echo ${
tom[*]}
[root@server1 test]# sh 1_100.sh
1 2 3 4 5 6 7 8 9 ……
2.3.2: Créer des tableaux impairs de 1 à 100
#!/bin/bash
for ((i=0;i<99;i+=2))
do
tom[$i]=$[$i+1]
done
echo ${tom[*]}
[root@server1 test]# sh 1_100.sh
1 3 5 7 9 11 13 15 ……
Deuxième méthode
#!/bin/bash
k=0
j=1
for ((i=0;i<=100;i++));do
k=$[ $i + $j ]
let j++
if [ $k -le 100 ];then
tom[$i]=$k
fi
done
echo ${
tom[@]}
[root@server1 test]# sh 1_100.sh
1 3 5 7 9 11 13 ……
2.3.3: Créez n'importe quel nombre et longueur, ajoutez des éléments en fonction des besoins du client
#!/bin/bash
i=0
while true
do
read -p "是否输入元素(yes/no):" e
if [ $e == "no" ];then
break
fi
read -p "请输入第$[$i+1]个元素:" f
tom[$i]=$f
let i++
done
echo ${
tom[@]}
[root@server1 test]# sh 1_100.sh
是否输入元素(yes/no):yes
请输入第1个元素:10
是否输入元素(yes/no):yes
请输入第2个元素:20
是否输入元素(yes/no):yes
请输入第3个元素:30
是否输入元素(yes/no):no
10 20 30
2.4.1: Obtenir la longueur du tableau et l'affectation des indices
[root@server1 test]# tom=(66 77 88)
[root@server1 test]# echo ${
tom[@]}
66 77 88
[root@server1 test]# echo ${
tom[1]}
77
2.4.2: L'ensemble de valeurs suivant, ajouter à 100 s'il est inférieur à 80
#!/bin/bash
num=(56 79 63 32 88)
#遍历数组
for ((i=0;i<${
#num[*]};i++))
do
if [ ${
num[$i]} -lt 80 ];then
new[$i]=100
else
new[$i]=${
num[$i]}
fi
done
echo ${
new[*]}
[root@server1 ~]# sh shell.sh
100 100 100 100 88
2.4.3: Trouver la valeur maximale du tableau
#!/bin/bash
num=(12 63 43 52)
tom=0
for ((i=0;i<${
#num[*]};i++))
do
if [ ${
num[$i]} -gt $tom ];then
tom=${
num[$i]}
fi
done
echo $tom
[root@server1 ~]# sh max.sh
63