Shell-基础函数
一、Shell函数
1、作用
1.将命令序列按格式写在一起
2.可方便重复使用命令序列
2、定义
格式一
function 函数名 {
命令序列
}
#!/bin/bash
function a {
read -p "请输入:" b
echo $[$b * 3]
}
c=`a`
echo $c
格式二
函数名 () {
命令序列
}
#!/bin/bash
a() {
read -p "请输入:" b
echo $[$b * 2 - 1]
}
c=`a`
echo $c
二、函数返回值
return表示退出函数并返回一个退出值,脚本中可以用 $ ? 变量显示该值
使用原则:
1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
2、退出状态码必须是0~255,超出时值将为除以256取余
#!/bin/bash
function a {
read -p "请输入:" b
return $[$b * 2]
}
a
echo $?
三、传参
1、格式
#!/bin/bash
sum() {
a=$[$1 + $2]
echo $a
}
sum $1 $2
2、函数变量的作用范围
函数在Shell脚本中仅在当前Shell环境中有效
Shell脚本中变量默认全局有效
将变量限定在函数内部使用local命令
①
扫描二维码关注公众号,回复:
13064220 查看本文章
#!/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
四、递归
1、阶乘
#!/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、递归目录
方法一
#!/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 ""
方法二
#!/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" ""
五、创建库
1、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调用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