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

落日映苍穹つ 2021-07-26 21:03 533阅读 0赞

shell函数

  • 一.shell函数
    • 1.概述
    • 2.函数的格式
    • 二.函数返回值
      • return
      • 使用原则:
        • return 获取值,echo $?得出输出值:
        • echo的值交给变量,输出变量得出值:
      • 三.函数传参
        • 方法1:
        • 方法二:
          • 例题:
          • 1-10的累计和乘2的结果(传参的方式):
        • 四.函数变量的作用范围
          • 1.概述
          • 五.递归
            • 1.阶乘
            • 2.递归目录
            • 3.函数库
          • 创建库:
          • 调用库运算:

一.shell函数

1.概述

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

2.函数的格式

格式1:

  1. function 函数名 {
  2. 命令序列
  3. }

格式2:

  1. 函数名() {
  2. 命令序列
  3. }

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

二.函数返回值

return

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

使用原则:

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

  1. #!/bin/bash
  2. function sum {
  3. read -p "请输入:" c
  4. return $[$c * 2]
  5. }
  6. sum
  7. echo $?

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

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

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

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

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

三.函数传参

方法1:

  1. #!/bin/bash
  2. sum () {
  3. i=$[$1 + $2]
  4. echo $i
  5. }
  6. sum $1 $2

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

方法二:

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

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

例题:
1-10的累计和乘2的结果(传参的方式):
  1. #!/bin/bash
  2. sum () {
  3. sen=0
  4. for ((a=$1; a<=$2; a++))
  5. do
  6. sen=$[$sen + $a]
  7. done
  8. echo $sen
  9. }
  10. result=`sum $1 $2`
  11. 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]

  1. else
  2. echo 1
  3. fi
  4. }
  5. read -p "请输入:" n
  6. ccc $n

在这里插入图片描述

在这里插入图片描述

2.递归目录
  1. #!/bin/bash
  2. list_files () {
  3. for f in `ls $1`
  4. do
  5. if [ -d "$1/$f" ]
  6. then
  7. echo "+$2$f"
  8. list_files "$1/$f" " $2"
  9. else
  10. echo "-$2$f"
  11. fi
  12. done
  13. }
  14. list_files "/var/log" ""

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

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

在这里插入图片描述

  1. #!/bin/bash
  2. jiafa() {
  3. echo $[$1 + $2]
  4. }
  5. jianfa() {
  6. echo $[$1 - $2]
  7. }
  8. chengfa() {
  9. echo $[$1 * $2]
  10. }
  11. chufa() {
  12. if [ $2 -ne 0 ]
  13. then
  14. echo $[$1 / $2]
  15. else
  16. echo "$2不能为0"
  17. fi
  18. }

在这里插入图片描述

调用库运算:
  1. . /root/myfuncs.sh
  2. read -p "输入第一个参数值" a
  3. read -p "输入第二个参数值" b
  4. results1=`jiafa $a $b`
  5. results2=`jianfa $a $b`
  6. results3=`chengfa $a $b`
  7. results4=`chufa $a $b`
  8. echo "加法结果为:$results1"
  9. echo "减法结果为: $results2"
  10. echo "乘法结果为:$results3"
  11. echo "除法结果为:$results4"

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

发表评论

表情:
评论列表 (有 0 条评论,533人围观)

还没有评论,来说两句吧...

相关阅读

    相关 shell脚本函数

    函数可以提高代码复用,在python、java中比较常见。 shell脚本也有函数,可以将一组命令集或语句形成一个可用代码块。 定义格式 函数名(){