Función de programación de Shell (introducción detallada)

Función de programación de Shell (introducción detallada)

Uno, el papel de las funciones de shell

Escriba la secuencia de comandos juntos en un formato que facilite el uso repetido de la secuencia de comandos

En segundo lugar, el formato de la función de shell

1. Definición de la función de shell

Formato 1:

unction 函数名 {
    
    

 命令序列

}

Formato 2:

函数名 (){
    
    

 命令序列

}

2. Valor de retorno de la función

return significa salir de la función y devolver un valor de salida, que puede ser mostrado por la variable $? en el script

Principio de uso

  • El valor de retorno se toma tan pronto como finaliza la función, porque la variable $? Solo devuelve el código de estado de salida del último comando ejecutado
  • El código de estado de salida debe ser 0 ~ 255, y el valor se dividirá por 256 si excede

Ejemplo:

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Tres, transferencia de parámetros de función

Ejemplo 1:

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Ejemplo 2:

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cuarto, el alcance de las variables de función

Las funciones en los scripts de shell solo son válidas en el entorno de shell actual

Las variables en los scripts de shell son globales de forma predeterminada

Utilice el comando local para limitar la variable a la función

Ejemplo 1:

#!/bin/bash
abc () {
    
    
   a=5
   b=6
   echo "c等于$c"
}

a=8
c=9
abc
echo "a等于$a"
echo "b等于$b"

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Ejemplo 2:

#!/bin/bash
abc () {
    
    
   local i
   i=8
   echo "inside $i"
}

i=9
abc
echo "outside $i"

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Ejemplo 3:

#!/bin/bash
abc () {
    
    
   echo "inside1 $i"
   let i++
   local i
   i=8
   echo "inside2: $i"
}

i=9
abc
echo "outside $i"
~       

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cinco, recursividad

La función llama a su propia función

1. Factorial

1、[root@localhost ~]#vim 7.sh 
#!/bin/bash
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"
2、[root@localhost ~]#. 7.sh 
请输入阶乘数:5
120
[root@localhost ~]#

2. Directorio recursivo

#!/bin/bash
function list_files {
    
    
    for f in `ls $1`
    do
      if [ -d "$1/$f" ]
      then
          echo "$2$f"
          list_files "$1/$f" "$2"
      else
          echo "$2$f"
      fi
     done
}

list_files "/var/log" ""

Seis, biblioteca de funciones

1、[root@localhost ~]#vim 9.sh 
#!/bin/bash
jiafa () {
    
    
  result=$[$1 + $2]
  echo $result
}

jianfa () {
    
    
   result=$[$1 - $2]
   echo $result
}

chengfa () {
    
    
   result=$[$1 * $2]
   echo $result
}
chufa () {
    
    
    if [ $2 -ne 0 ]
    then
        result=$[$1 / $2]
        echo $result
    else
      echo "$2不能等于0!"
    fi
2、[root@localhost ~]#vim 10.sh 
#!/bin/bash
. ~/9.sh

read -p "输入第一个参数值:" first
read -p "输入第二个参数值:" second

result1=`jiafa $first $second`
result2=`jianfa $first $second`
result3=$(chengfa $first $second)
result4=$(chufa $first $second)

echo $result1
echo $result2
echo $result3
echo $result4
3、[root@localhost ~]#vim 10.sh 
   [root@localhost ~]#. 10.sh 
   输入第一个参数值:10
   输入第二个参数值:30
   40
  -20
   300
   0

Supongo que te gusta

Origin blog.csdn.net/weixin_51573771/article/details/111603107
Recomendado
Clasificación