前言
初学者写的脚本
#/bin/bash #准备工作 mount /dev/cdrom /mnt cd /etc/yum.repos.d mkdir repo.bak mv *.repo repo.bak #创建本地yum源仓库配置文件 echo '[local]' >> local.repo echo 'name=local' >> local.repo echo 'baseurl=file:///mnt' >> local.repo echo 'enabled=1' >> local.repo echo 'gpgcheck=0' >> local.repo yum clean all && yum makecache #安装httpd服务,并启动,设置开机自启动 yum install -y httpd systemctl start httpd systemctl enable httpd
这个脚本乍一看,没有什么问题,能够正常执行,但是流水账似的脚本,公司同事一看你就是个新手
老员工看一个人的脚本写的多不多,规不规范:
1.看你写的格式
2.有没有大量使用函数
老手修改后的脚本:
#/bin/bash #准备工作 read_work () { mount /dev/cdrom /mnt cd /etc/yum.repos.d mkdir repo.bak mv *.repo repo.bak } #创建本地yum源仓库配置文件 create_repo () { echo '[local]' >> local.repo echo 'name=local' >> local.repo echo 'baseurl=file:///mnt' >> local.repo echo 'enabled=1' >> local.repo echo 'gpgcheck=0' >> local.repo yum clean all && yum makecache } #安装httpd服务,并启动,设置开机自启动 install_soft () { yum install -y httpd systemctl start httpd systemctl enable httpd } ##### main ####### read_work create_repo install_soft
这就是学函数的意义,使得外人读起来很方便理解你的代码逻辑
一、什么是函数
使用函数可以避免代码重复
使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更强
类似于Java的方法
#函数定义1 function 函数名 { } #函数定义2 函数名() { } ##### main ####### #可以在主代码区域中直接使用函数名调用函数 函数名
法一:function 函数名 { 三部分之间都要有空格
法二:函数名() { 函数名和括号之间空格可有可无
二、获取函数的返回值
return表示退出函数并返回一个退出值,脚本中可以用$?变量结合echo输出该值
在函数体中用echo输出,并在函数体外可以使用变量赋值后可进一步对返回值操作
使用原则:
1.函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
2.退出状态码必须是0~255,超出时值将除以256取余
$?作用一:显示上一条命令是否正确
$?作用二:显示退出函数并返回的退出值
示例1:return
#!/bin/bash #在文件上方先定义函数,然后在主代码部分调用函数 function test1 { #function test1 { 之间都要有空格,否则执行不成功 read -p "请输入一个整数:" num return $num } ########## main ########### #可以在主代码区域中直接使用函数名调用函数 test1 #调用函数 echo $? #输出返回值
示例2:echo
因为return的返回值的范围是0-255,超过部分除以256取余,得不到我们想要的结果,所以我们使用echo
#!/bin/bash #在文件上方先定义函数,然后在主代码部分调用函数 function test1 { #function test1 { 之间都要有空格,否则执行不成功 read -p "请输入一个整数:" num return $[num * 2] } ########## main ########### #可以在主代码区域中直接使用函数名调用函数 test1 echo $? #输出返回值
#!/bin/bash #在文件上方先定义函数,然后在主代码部分调用函数 function test1 { #function test1 { 之间都要有空格,否则执行不成功 read -p "请输入一个整数:" num echo $[num * 2] #改为echo直接在函数中输出 } ########## main ########### #可以在主代码区域中直接使用函数名调用函数 test1
这个要自己多操作,光看写的东西不能够很好的领悟到其中的含义
三、函数传参
sum1() { sum=$[$1 + $2] echo $sum } ########## main ########### read -p "请输入第一个参数:" first read -p "请输入第二个参数:" second sum1 $first $second