shell_函数的传参_递归_创建库

一.shell函数

1.概述

  • 将命令序列按格式写在一起
  • 可方便重复使用命令序列

2.函数的格式

格式1:


function 函数名 {
命令序列
}


格式2:


函数名() {
命令序列
}

在这里插入图片描述在这里插入图片描述

二.函数返回值

return

  • return表示退出函数并返回一个退出值,脚本中可以用 $ ? 变量显示该值

使用原则:

1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
2、退出状态码必须是0~255,超出时值将为除以256取余


#!/bin/bash
function sum {
read -p "请输入:" c
return $[$c * 2]
}
sum
echo $?


return 获取值,echo $?得出输出值:

在这里插入图片描述
在这里插入图片描述


#!/bin/bash
sum () {
read -p "请输入:" c
echo $[$c * 2]
}
result=`sum`
echo $result

        
echo的值交给变量,输出变量得出值:

在这里插入图片描述
在这里插入图片描述

三.函数传参

方法1:

#!/bin/bash
sum () {
i=$[$1 + $2]
echo $i
}

sum $1 $2

在这里插入图片描述
在这里插入图片描述

方法二:

#!/bin/bash
sum () {
i=$[$1 + $2]
echo $i
}
read -p "请输入第一个参数值" a
read -p "请输入第二个参数值" b

sum $a $b


在这里插入图片描述
在这里插入图片描述

例题:
1-10的累计和乘2的结果(传参的方式):

#!/bin/bash
sum () {
sen=0
for ((a=$1; a<=$2; a++))
do
  sen=$[$sen + $a]
done
echo $sen
}
result=`sum $1 $2`
echo $[$result * 2]


在这里插入图片描述

四.函数变量的作用范围
1.概述
  • 函数在shell脚本中仅在当前shell环境中有效
  • shell脚本中变量默认全局有效
  • 将变量限定在函数内部使用local命令

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

五.递归
1.阶乘
  • 阶乘指从1乘以2乘以3乘以4一直乘到所要求的数

#!/bin/bash
ccc() {
if [ $1 -ne 1 ]
then
   local temp=$[$1-1]
   local result=`ccc $temp`
   echo $[$1*$result]


else
   echo 1

fi
}

read -p "请输入:" n
ccc $n


在这里插入图片描述

在这里插入图片描述

2.递归目录

#!/bin/bash
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" ""

在这里插入图片描述
在这里插入图片描述

3.函数库
  • 函数写入空文件中,运用时,调用空文件
创建库:

在这里插入图片描述


#!/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 "$2不能为0"
fi
}

在这里插入图片描述

调用库运算:

. /root/myfuncs.sh

read -p "输入第一个参数值" a
read -p "输入第二个参数值" b

results1=`jiafa $a $b`
results2=`jianfa $a $b`
results3=`chengfa $a $b`
results4=`chufa $a $b`


echo "加法结果为:$results1"
echo "减法结果为: $results2"
echo "乘法结果为:$results3"
echo "除法结果为:$results4"


在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值