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
Formatear dos
函数名 () {
命令序列
}
#!/bin/bash
a() {
read -p "请输入:" b
echo $[$b * 2 - 1]
}
c=`a`
echo $c
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 $?
Tres, parámetros de transferencia
1. Formato
#!/bin/bash
sum() {
a=$[$1 + $2]
echo $a
}
sum $1 $2
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
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
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 ""
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" ""
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
}
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