思创医惠网站建设,网站的制作方案,wordpress怎么建栏目,网站dede后台Linux网络——Shell编程之函数 一、概述二、定义函数的格式1.格式一2.格式二 三、函数的查看和删除1.查看 declare2.删除 declare 四、函数的返回值1.return 返回值2.echo 返回值 五、函数的参数传入与变量范围1.函数的传参2.函数变量的作用范围 六、函数的应用1.阶乘2.递归目录… Linux网络——Shell编程之函数 一、概述二、定义函数的格式1.格式一2.格式二 三、函数的查看和删除1.查看 declare2.删除 declare 四、函数的返回值1.return 返回值2.echo 返回值 五、函数的参数传入与变量范围1.函数的传参2.函数变量的作用范围 六、函数的应用1.阶乘2.递归目录 一、概述 在shell脚本中存在着大量的命令操作其中有很多编写的代码的重复性很高让代码出现了大量的冗余和繁琐不易维护和解读。 作用定义较为复杂的但是需要重复使用的内容以便再次使用可以直接调用函数节约时间提高效率。
二、定义函数的格式
1.格式一
function 函数名 {命令序列
}2.格式二
函数名() {命令序列
}三、函数的查看和删除
1.查看 declare
语法 declare -F
2.删除 declare
语法unset 函数名
四、函数的返回值
1.return 返回值 return表示退出函数并返回一个退出值脚本中可以用 $ ? 变量显示该值 使用原则 函数一结束就取返回值因为$?变量只返回执行的最后一条命令的退出状态码 退出状态码必须是0~255超出时值将为除以256取余 2.echo 返回值 echo对于linux来讲就是一个万能输出的工具当 return 不能满足我们我们对返回值的需求时可以强迫echo来充当返回值输出工具 五、函数的参数传入与变量范围
1.函数的传参
函数内部 函数体内部的 $1、$2 代表的是调用函数时函数后面跟的位置参数 在函数体内部的 $#代表调用函数时函数后面跟的参数个数 在函数体内部的$、$*代表调用函数时函数后面跟的所有参数
函数外部 函数体外的$1、$2 代表的是执行脚本时脚本后面跟的位置参数 在函数体外时$# 代表的是执行脚本时脚本后面跟的参数个数 在函数体外时$* 、$ 代表的是执行脚本时脚本后面跟的所有参数
2.函数变量的作用范围
函数默认只能脚本内的 shell 环境有效(使用source执行脚本也会影响系统的当前shel环境) 脚本中的变量默认全局有效 (即函数体内外都有效) 在函数体内执行 local 变量 可将变量限定在函数体内部使用
六、函数的应用
1.阶乘
#!/bin/bash
##使用函数的递归实现阶乘
test1() {if [ $1 -eq 1 ]thenecho 1elif [ $1 -gt 1 ]thenlocal temp$[$1 - 1]local result$(test1 $temp)echo $[$1 * result]elseecho 输入的内容无效请重新输入内容fi
}
########### main ################
read -p 请输入内容的整数 num
result$(test1 $num)
echo $num的阶乘为$result2.递归目录
#!/bin/bash
###使用函数递归目录如果是文件直接输出文件名如果是目录则输出目录名且输出此目录下的所有目录和文件名
function list_files {
for f in ls $1
doif [ -d $1/$f ]thenecho $2$flist_files $1/$f $2elseecho $2$ffi
done
}############## main #####################
read -p 请输入需要查询的目录 num
list_files /$num