shell编程之函数以及函数中的递归(一)

简介: shell编程之函数以及函数中的递归(一)

前言


初学者写的脚本

#/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





目录
相关文章
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
22天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
Shell Linux C语言
Shell 函数
10月更文挑战第4天
22 7
|
1月前
|
Shell
Shell编程(下)
Shell编程(下)
89 1
|
1月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
40 1
|
1月前
|
Shell Linux 开发工具
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
67 12
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
45 12