função de script de shell

função

1.O que é uma função

Ao escrever scripts, alguns scripts podem ser usados ​​repetidamente e podem ser resolvidos chamando funções

Blocos de instruções definidos como funções são aproximadamente iguais a aliases

Como usar a função:

  1. definir função
  2. Referenciar novamente a função

formato básico

função nome da função {

Sequência de comandos

}

Nome da função(){

sequência de comando

}

função nome_função () {

…Corpo da função…

}

Precauções

  1. Escreva diretamente o nome da função ao chamar a função.
  2. A última função com o mesmo nome entra em vigor.
  3. A chamada de uma função deve ser definida primeiro
  4. A ordem em que outras funções são chamadas não importa, desde que sejam definidas primeiro.
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. Ver funções

[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. Função excluir

cancelar func_name

[root@yyds opt]#unset h w nihao

4. Valor de retorno da função

return significa sair da função e retornar um valor de saída. A variável $? pode ser usada para representar esse valor no script.

Princípios de uso:

O valor de retorno é retornado assim que a função termina. A variável $? retorna apenas o código de retorno de saída do último comando executado.

O código de saída deve ser 0-255 e qualquer valor excedente será dividido por 256.

test1 () {
        read -p "请输入一个数字:" num
        return $[$num*2]


}

test1
echo $?

[root@yyds opt]#bash return.sh 
请输入一个数字:34
68

5. Passando parâmetros de funções

Escopo das variáveis ​​de função:

Funções em scripts shell são válidas apenas no ambiente shell atual

Variáveis ​​de funções em scripts shell são globalmente válidas por padrão

Limite variáveis ​​dentro de uma função usando o comando local

#!/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. Arquivo de função

Crie um arquivo para armazenar funções

可以建立一个文件用来存储函数,下次要使用函数时可以
. 文件名
函数名
进行使用

7. Recursão de função

Uma função chama sua própria função


阶乘
使用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

Acho que você gosta

Origin blog.csdn.net/q1231vev/article/details/132397790
Recomendado
Clasificación