fonction de script shell

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 :

  1. définir la fonction
  2. 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

  1. Écrivez directement le nom de la fonction lors de l'appel de la fonction.
  2. La dernière fonction du même nom prend effet.
  3. L'appel d'une fonction doit être défini en premier
  4. 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

Je suppose que tu aimes

Origine blog.csdn.net/q1231vev/article/details/132397790
conseillé
Classement