Shell脚本—函数应用
Posted 正在迷途
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本—函数应用相关的知识,希望对你有一定的参考价值。
一、概述
函数其实就是一堆命令的合集,用来完成特定功能的代码块,你可以对它进行自定义命令,并且可以在脚本中任意位置使用这个函数,要使用定义的函数,只需要填写函数名称就可以了。
二、Shell函数定义
1.方法1
#!/bin/bash
#定义函数
function first
echo "holle world"
########主体#######
#调用函数
first
2.方法2
#!/bin/bash
#定义函数
second()
echo "bye world"
########主体#######
#调用函数
second
三、函数返回值
return表示退出函数并返回一个退出值,脚本中可以使用$?变量表示该值。
使用原则:
- 函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码。
- 退出状态码要在0~255之间,超出时值将处以256取余。
1.示例一
#!/bin/bash
function a
read -p "输入数值:" b
return $[$b * 2]
#######主体#######
a
echo $?
2.示例二
#!/bin/bash
a()
read -p "请输入:" b
b=$[ $b*2 ]
echo $b
########主体######
result=`a`
echo $result
四、函数传参
传参就是传递参数。
1.示例1
#!/bin/bash
sum()
a=$[$1 + $2]
echo $a
read -p "输入数值:" first
read -p "输入数值:" second
sum $first $second
2.示例2
sum1()
sum=$[$1 + $2]
echo $sum
result=$(sum1 $1 $2)
echo $result
推荐使用第二种,比较快速高效。
五、函数变量的作用范围
- 函数在Shell脚本中仅在当前Shell环境中有效。
- Shell脚本中变量默认全局有效。
- 将变量限定在函数内部使用local命令。
示例
#!/bin/bash
myfun()
echo $i
local i
i=9
echo $i
i=1
myfun
echo $i
六、递归
函数调用自己本身的函数
1.阶乘
#!/bin/bash
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 "$n 的阶乘结果:$result"
2.递归目录
#!/bin/bash
file()
#遍历指定目录或子目录的所有文件
for f in $(ls $1)
do
if [ -d "$1/$f" ]
then
#如果是目录则输出目录
echo "目录:$2$f"
#递归调用函数判断子目录里的文件或者目录,并且输出时进行缩进
file "$1/$f" " $2"
else
#如果是子目录里的文件输出时进行缩进
echo "文件:$2$f"
fi
done
#递归查看指定目录
#第一个位置变量用于判断是目录或是文件,第二个位置变量用于给子目录或者子文件实现位移作用
file "/jiaobenHanShu" ""
七、创建数据库
先建一个函数库的脚本
#!/bin/bash
jia()
echo $[$1 + $2]
jian()
echo $[$1 - $2]
cheng()
echo $[$1 * $2]
chu()
if [ $2 -ne 0 ]
then
echo $[$1 / $2]
else
echo "被除数不能为0"
fi
在另一个脚本使用数据库脚本文件,直接调用函数
#shell 脚本 片段