目录

一、Shell的函数的定义

1.1定义

1.2 函数返回值

1.3 函数传参

1.4 函数变量的作用范围

1.5 函数递归

1.5.1 阶乘

1.5.2 递归目录

1.6 创建库


一、Shell的函数的定义

1.1定义

  • 将命令序列按格式写在一起
  • 可方便重复使用命令序列
[1]
function函数名{命令序列
}[2]
函数名() {命令序列

 示例1:

示例2:调用函数,创建用户

1.2 函数返回值

return表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值。
使用原则:
1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码。
2、退出状态码必须是0~255,超出时值将为除以256取余。

return  echo两种输出函数的获取方法

function db1 {read -p "请输入: " valuereturn $[$value * 2]}db1echo $?db1 () {read -p "请输入: " valueecho $[$value * 2]
}result=`db1`echo $result

示例1:利用函数输出一个数值为设定数值num的两倍

1.3 函数传参

格式:

函数传参:sum1 () {sum=$[$1 + $2]echo $sum}read -p "输入第一个参数: " firstread -p "输入第二个参数: " secondsum1 $first $secondsum2 () {sum=$[$1 + $2]echo $sum}sum2 $1 $2

示例1:

 示例2:

$1--10  $4--40,所以输出值为10+40=50

1.4 函数变量的作用范围

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

linux全局变量局部变量

  • 全局变量:变量作用于整个操作系统所有用户的shell环境内。
  • 局部变量:变量只作用于当前shell环境内。

shell脚本全局变量局部变量

  • 全局变量:作用于shell脚本当前的整个shell环境内,包括所有函数体内或函数体外。
  • 局部变量:作用于shell脚本当前的sdell环境内,仅限制于某个函数体内。

格式:

myfun() {local ii=8echo $i}i=9myfunecho $i

示例:

1.5 函数递归

函数调用自己本身的函数

1.5.1 阶乘


fact () {if [ $1 -eq 1 ]thenecho 1
elselocal temp=$[$1-1]local result=$(fact $temp)echo $[$1 * $result]#  5 * $result(4*$result(3*$result(2*$result(1))))fi}########  main ########read -p "请输入" n
result=$(fact $n)
echo $result

示例:算一个数的阶乘,以数值8为例

1.5.2 递归目录

格式:

function list_files {
for f in `ls $1`
doif [ -d "$1/$f" ]thenecho "$2 目录是 $f"list_files "$1/$f" "$2"elseecho "$2 文件是 $f"fi
done
}list_files "/var/log" ""

示例:递归查看相关的文件或者目录

 输出结果

1.6 创建库

vim myfuncs.sh
#!/bin/bash
jiafa () {echo $[$1 + $2]
}jianfa () {echo $[$1 - $2]
}chengfa () {echo $[$1 * $2]
}chufa () {if [$2 -ne 0]thenecho $[$1 / $2]elseecho "$2 不能为0"fi
}fact () {if [ $1 -eq 1 ]thenecho 1elif [ $1 -eq 0 ]thenecho 0elselocal temp=$(jianfa $1 1)local result=$(fact $temp)#echo $[$1 * $result]echo $(chengfa $1 $result)fi
}vim test.sh  . myfuncs.shvalue1=$1value2=$2result=$(jiafa $value1 $value2)result2=$(chufa $value1 $value2)result3=$(fact $value1)echo "加法结果为: $result"
echo "除法结果为: $result2"
echo "阶乘结果为: $result3"

示例:

 输出的结果

Shell 函数的定义和使用相关推荐

  1. bash shell函数的定义及变量的简单说明

    From: http://blog.sina.com.cn/s/blog_4ce3a68a0100i77a.html 函数: "函数是一种脚本内脚本",程序员很难想像没有函数的日子 ...

  2. Shell函数的定义及用法

    1.Shell函数 利用Shell函数为报告生成程序添加下内容 输出系统正常运行时间和负载,这是自上次关机或重启之后系统的运行时长,以及在若干时间间隔内,当前运行在处理器上的平均任务量 输出磁盘空间, ...

  3. Shell函数详解(函数定义、函数调用)

    Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可. Shell 中的函数和C++.Java.Python.C# 等其它编程语言中的函数类 ...

  4. Shell函数(函数定义、函数变量、函数调用、函数传参、函数返回值、获取函数返回值)

    分享知识 传递快乐 1.函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.Shell 函数定义的语法格式如下: [function] funname [()]{函 ...

  5. shell函数定义、函数调用及函数返回值用法

    1.函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.Shell 函数定义的语法格式如下: [function] funname [()]{     函数体    ...

  6. linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...

    摘要 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高. 高级语言都支持函数,Shell也不例外.今天就为大家介绍下Shell中函数相关用法. 函数可以将一个复杂功能划 ...

  7. Shell函数返回值、删除函数、在终端调用函数

    Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () {list of commands[ return value ] } ...

  8. Shell函数:Shell函数返回值、删除函数、在终端调用函数

    函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...

  9. Shell 脚本知识回顾 (六) —— Shell 函数

    一.Shell函数:Shell函数返回值.删除函数.在终端调用函数 函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Sh ...

最新文章

  1. 关于webrtc视频会议的解决方案
  2. optee系统服务/service的实现方式
  3. Apache Shiro的运行流程和权限控制方式分析
  4. cad图框尺寸标准图_工程必备 | CAD图纸1:100打印可以量取的尺寸
  5. 线程池ThreadPool,线程池底层ThreadPoolExecutor方法七大参数,拒绝策略,以及实际开发中高并发下用到哪个线程池?
  6. 怎么用计算机杀毒,电脑怎样查杀病毒
  7. github ssl验证跳过
  8. boost::asio
  9. debian下apr-get isntall 出错提示用apt-get -f install问题
  10. windows操作系统_国产Linux操作系统体验:易用性不比Windows差,但输在这点上
  11. JavaWeb之Servlet编程
  12. JMeter安装及使用
  13. matlab二次曲线插补,圆弧插补器插补非圆二次曲线的方法
  14. 电力GIS技术应用及若干相关问题
  15. win7 把html作为桌面,微软开始部署桌面HTML5版必应Bing
  16. 使用两个路由器级连实现共用一个宽带
  17. Unity3d开发MOBA游戏类《王者荣耀》记录(一)
  18. 数学建模学习(7):分支结构与循环结构详解
  19. php取网盘真实链接,【已解决】获取蓝奏云真实链接问题?
  20. 关于2022考研报名,这些你需要知道

热门文章

  1. MATLAB生成骑缝章(png to png)
  2. (经典)瑾此献给1975-1989年出生的人(看后请顶)
  3. STC 89C52 单片机引脚对应的功能以及实例讲解
  4. 为何软考办官方从来不公布标准答案以及通过率?
  5. 96款2018最佳英文字体(附Mac字体安装方法)
  6. Spring Cloud Gateway 参考指南
  7. android USB连接电脑只充电问题
  8. xftp、使用pure-ftpd搭建FTP服务
  9. 教你通过windows的正版验证
  10. 推荐几个pdf转换器注册码