一、函数介绍function
为了不代码重复使用,咱们通常经过函数编写代码块,而这一个代码块用来实现某种功能。
且,这个功能在后面的代码中,会重复调用;
二、函数的语法格式
(1)函数的写法格式:
function check_cpu {
cat /proc/cpuinfo
}
ls /etc/
check_cpu 【不调用函数,则函数体中的命令是不会执行的;在哪里调用,函数体中的命令就在那里执行】shell
(2)*fun_name() {
函数体
$1 $2 ... $10
}
fun_name 1 2 3
:wq
function.sh 4 5 6 7 8 9 10 11 12 13 14
三、函数的调用 -- return
函数返回值
(1)当函数中指定了判断语句的时候,咱们默认要返回一个错误的结果,可是最近一条命令确实正确的,这时候,咱们须要经过return返回一个咱们须要的错误状态码;
(2)函数结束的时候,咱们须要指定一个return的正确返回码; 若是使用在循环语句中,return会跳出循环;
四、函数接受参数
函数 变量
和普通的命令同样
只须要注意,在函数接受参数的时候,不会使用外部的传参,而是以脚本内部的参数为准,
五、函数中的变量
(1)本地变量
local 变量名=xxx
本地变量只在本函数内部生效bash
(2)局部变量
脚本内部的变量
(3)环境变量
在整个Linux系统的bash中生效 函数
TEST() {
local i=9
let i++
echo i
exit 0
}
i=1
TEST
echo i
(4) 关于脚本执行的问题:
bash 的方式来执行 -- #!/bin/bash
bash所执行的脚本中定义的变量,在当前shell的子shell中;
全路径或者相对路径的方式来执行; -- 须有受权执行权限;
source 脚本文件 或者 . 脚本文件
source这种方式来执行脚本的时候,内部变量所定义的值是在当前shell中的;
六、函数递归
n的阶乘 ui
n! = n(n-1)!
$[$1* $[ fac -1]]
fact(){
if [ $1 -lt 1 ];then
echo 1 //必定要写成1
else
i=$[$1*$(fact $[$1-1])] // n(n-1)
echo $i
fi
}
(n-1) = (n-1)(n-2)!
2!=2*1!
fac(){
$[fac -1 ]
}
fac 5
兔子数列,斐波那契数列 spa
#!/bin/bash
#
fab(){
if [ $1 -eq 1 ];then
echo 1
elif [ $1 -eq 2 ];then
echo 1
else
echo $[$(fab $[$1-1])+$(fab $[$1-2])]
fi
}
fab 7