作用
- 将命令序列按格式写在一起
- 可方便重复使用命令序列
定义
-
function 函数名 { 命令序列 } -
函数名(){ 命令序列 }
函数返回值
return表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值使用原则:
- 函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
- 退出状态码必须是0~255,超出时值将为除以256取余


函数传参

函数变量的作用范围
- 函数在Shell脚本中仅在当前Shell环境中有效
- Shell脚本中变量默认全局有效
- 将变量限定在函数内部使用local命令




递归
阶乘
-
脚本命令
fact () { if [ $1 -eq 1 -o $1 -eq 0 ];then echo 1 elif [ $1 -gt 1 ];then local temp=$[$1 - 1] local result=$(fact $temp) echo $[$1 * $result] else echo "不存在" fi } esult=$(fact $1) echo "$1 的阶乘$result" -
验证

递归目录文件
-
需求
- mkdir -p /root/bin/aa/bb/cc/dd
- touch /root/bin/aa/bb/cc/dd/abc.txt
- 输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件
-
脚本命令
list_files() { for i in $(ls $1) do if [ -d "$1/$i" ];then echo "$2$i" list_files "$1/$i" " $2" else if [ ! -x "$1/$i" ];then echo "$2$i" fi fi done } #-------------main--------- OLDIFS=$IFS IFS=$IFS':' for folder in $PATH do echo $folder list_files "$folder" " " done IFS=$OLDIFS-
验证

-

函数库
-
建立函数库

-
调用函数库

-
操作验证

4022

被折叠的 条评论
为什么被折叠?



