Funciones básicas de shell

Uno, función Shell

1. Función

1. Escriba la secuencia de comandos juntos en un formato
2. Es conveniente utilizar la secuencia de comandos repetidamente

2. Definición

Formatear uno

function 函数名 {
    命令序列
}
#!/bin/bash

function a {

read -p "请输入:" b
   echo $[$b * 3]

}
c=`a`
echo $c

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

Formatear dos

函数名 () {
 命令序列
}
#!/bin/bash

a() {
read -p "请输入:" b
echo $[$b * 2 - 1]
}
c=`a`
echo $c

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

En segundo lugar, el valor de retorno de la función

return significa salir de la función y devolver un valor de salida. La variable $? se puede usar en el script para mostrar el valor
. Principios de uso:
1. Tome el valor de retorno tan pronto como finalice la función, porque la variable $? devuelve el código de estado de salida del último comando ejecutado.2
, El código de estado de salida debe ser 0 ~ 255, el valor se dividirá por 256 si excede

#!/bin/bash

function a {
 
read -p "请输入:" b
   return $[$b * 2]

}
a
echo $?

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

Tres, parámetros de transferencia

1. Formato

#!/bin/bash

sum() {
a=$[$1 + $2]
echo $a
}
sum $1 $2

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

2. 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 válidas globalmente de forma predeterminada.
Limite las variables a la función y use el
comando local①

#!/bin/bash

idsrs () {

echo $i
i=$[$i+1]

local i
i=88
i=$[$i+1]
echo $i

}
i=99
echo $i
i=$[$i+1]
idsrs

echo $i

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

Cuatro, recursividad

1. Factorial

#!/bin/bash

fact() {
  if [ $1 -ne 1 ];then
    local temp=$[$1 - 1]
    local result=$(fact $temp)
    echo $[$1 * $result]
  else
    echo 1
  fi
}
read -p "请输入阶乘数值:" n
fact $n

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

2. Directorio recursivo

método uno

#!/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í
Método dos

#!/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" ""

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Cinco, crea una biblioteca

1. Cree una base de datos con vim demo9.sh

#!/bin/bash
jiafa() {
  echo $[$1 + $2]
}

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

chengfa() {
  echo $[$1 * $2]
}

chufa() {
if [ $2 -ne 0 ];then
  echo $[$1 / $2]
else
  echo "除数不能为0!" 
fi
}

Inserte la descripción de la imagen aquí

2. Vim demo10.sh llama a la base de datos de deme9.sh

. /root/demo9.sh

a=$1
b=$2
a1=`jiafa $a $b`
a2=`jianfa $a $b`
a3=`chengfa $a $b`
a4=`chufa $a $b`

echo "加法结果为:" $a1
echo "减法结果为:" $a2
echo "乘法结果为:" $a3
echo "除法结果为:" $a4

Inserte la descripción de la imagen aquí

3. Resultado de la verificación

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/s15212790607/article/details/114641914
Recomendado
Clasificación