Funciones de script de shell (transferencia de parámetros de función, recursividad, creación de bibliotecas)

Uno, función Shell

  • Escriba la secuencia de comandos juntos en un formato
  • Secuencia de comandos fácil de reutilizar

1.Definición de la función Shell

方法一:
function 函数名 {
    
    
命令序列
}

方法二:
函数名() {
    
    
命令序列
}

2. El 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

Principios de uso:
1. Tome el valor de retorno tan pronto como finalice la función, porque la variable $? Solo devuelve el código de estado de salida del último comando ejecutado.
2. El código de estado de salida debe ser 0 ~ 255, y el valor será dividido por 256 si excede

regreso

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

eco

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

Dos, transferencia de parámetros de función

#!/bin/bash
sum() {
    
    
s=$[$1 + $2]
echo $s
}
read -p "请输入第一个参数:" first
read -p "请输入第二个参数:" second
sum $first $second

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

Tres, el alcance de las variables de función

  • Las funciones en los scripts de Shell solo son válidas en el entorno actual de Shell
  • Las variables en los scripts de Shell son efectivas globalmente de forma predeterminada
  • Utilice el comando local para limitar la variable a la función
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

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

Cuatro, recursividad

1. Factorial

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

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

2. Directorio recursivo

#!/bin/bash
listdir () {
    
    
for i in $1/*
do
  if [ -d $i ]
  then
    echo "$2$i:"
    listdir $i " $2"
  else
    echo "$2$i"
  fi
done
}
read -p "请输出目录名:" dir
listdir $dir ""

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

Cinco, crea una biblioteca

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

Supongo que te gusta

Origin blog.csdn.net/IHBOS/article/details/114642860
Recomendado
Clasificación