fonction
1.Qu'est-ce qu'une fonction
Lors de l'écriture de scripts, certains scripts peuvent être utilisés à plusieurs reprises et peuvent être résolus en appelant des fonctions
Les blocs d'instructions définis comme fonctions sont approximativement égaux aux alias
Comment utiliser la fonction :
- définir la fonction
- Ré-référencer la fonction
format de base
fonction nom de la fonction {
Séquence de commandes
}
Nom de la fonction(){
séquence de commandes
}
fonction nom_fonction () {
…Corps de fonction…
}
Précautions
- Écrivez directement le nom de la fonction lors de l'appel de la fonction.
- La dernière fonction du même nom prend effet.
- L'appel d'une fonction doit être défini en premier
- L'ordre dans lequel les autres fonctions sont appelées n'a pas d'importance tant qu'elles sont définies en premier.
func_name (){
...函数体...
}
[root@yyds opt]#func1 (){ hostname;date;}
[root@yyds opt]#func1
yyds
2023年 08月 15日 星期二 18:19:33 CST
[root@yyds opt]#vim func.sh
h () {
echo "hello"
}
nihao () {
echo `h` `w`
}
w () {
echo "world"
}
nihao
[root@yyds opt]#bash func.sh
hello world
//同名函数会进行覆盖
2. Afficher les fonctions
[root@yyds opt]#declare -F
declare -f __HOSTNAME
declare -f __SIZE
declare -f __SLAVEURL
declare -f __VOLNAME
declare -f __expand_tilde_by_ref
declare -f __get_cword_at_cursor_by_ref
declare -f __git_aliased_command
declare -f __git_aliases
..............
//函数列表,可以declare -f __HOSTNAME查看内容
3. Supprimer la fonction
désactiver nom_fonction
[root@yyds opt]#unset h w nihao
4. Valeur de retour de la fonction
return signifie quitter la fonction et renvoyer une valeur de sortie. La variable $? peut être utilisée pour représenter cette valeur dans le script.
Principes d'utilisation :
La valeur de retour est renvoyée dès la fin de la fonction. La variable $? ne renvoie que le code retour de sortie de la dernière commande exécutée.
Le code de sortie doit être compris entre 0 et 255 et toute valeur excédentaire sera divisée par 256.
test1 () {
read -p "请输入一个数字:" num
return $[$num*2]
}
test1
echo $?
[root@yyds opt]#bash return.sh
请输入一个数字:34
68
5. Passage des paramètres des fonctions
Portée des variables de fonction :
Les fonctions des scripts shell ne sont valides que dans l'environnement shell actuel
Les variables des fonctions dans les scripts shell sont globalement valides par défaut
Limiter les variables à l'intérieur d'une fonction à l'aide de la commande locale
#!/bin/bash
sum1 (){
echo $1
echo $2
}
sum1 $2 $1
[root@yyds opt]#bash chuan.sh 2 5
5
2
//sum1 后面的$2对应这sum1函数里面的$1
[root@localhost opt]# vim demo8.sh
#!/bin/bash
myfun(){
i=8
echo $i
}
myfun
[root@localhost opt]# chmod +x demo8.sh
[root@localhost opt]# ./demo8.sh
8
[root@localhost opt]# vim demo8.sh
#!/bin/bash
myfun(){
i=8
echo $i
}
myfun
echo $i
[root@localhost opt]# ./demo8.sh
8
8
[root@localhost opt]# ./demo8.sh
8
8
[root@localhost opt]# cat demo8.sh
#!/bin/bash
myfun(){
i=8
echo $i
}
i=9
myfun
echo $i
[root@localhost opt]# ./demo8.sh
8
8
[root@localhost opt]# cat demo8.sh
#!/bin/bash
myfun(){
i=8
echo $i
}
myfun
i=9
echo $i
[root@localhost opt]# ./demo8.sh
8
9
[root@localhost ~]#name=666
[root@localhost ~]#func1 () { name=99 ; echo $name; }
[root@localhost ~]#func1
99
[root@localhost ~]#echo $name
99
[root@localhost ~]#name=666;func1 () { local name=99 ;echo $name; };echo $name
#加上local变量即可将变量限制在函数内
666
6. Fichier de fonction
Créer un fichier pour stocker les fonctions
可以建立一个文件用来存储函数,下次要使用函数时可以
. 文件名
函数名
进行使用
7. Récursion de fonction
Une fonction appelle sa propre fonction
阶乘
使用for循环
#!/bin/bash
sum=1
read -p "请输入一个数:" num
for i in `seq $num`
do
let sum=$[i*sum]
done
echo $sum
函数调用自己
#!/bin/bash
#
fact() {
if [ $1 -eq 0 -o $1 -eq 1 ]
then
echo 1
else
echo $[$1*$(fact $[$1-1])]
fi
}
fact $1
阶乘
fact() {
if [ $1 -eq 1 ]
then
echo 1
else
local temp=$[$1 - 1]
local result=$(fact $temp)
echo $[$1 * $result]
fi
}
read -p "请输入:" n
result=$(fact $n)
echo $result