课时85:流程控制_函数基础_基础知识

2.1.1 基础知识

这一节,我们从 基础知识、简单实践、小结 三个方面来学习。

基础知识

场景需求

	在shell脚本的编写过程中,我们经常会遇到一些功能代码场景:多条命令组合在一起,实现一个特定的功能场景逻辑、一些命令在脚本内部的多个位置频繁出现。在这些场景的代码量往往不多,但是频繁使用的话,会导致脚本的整体逻辑脉络比较松散和框架散乱。
	所以我们需要一种脚本逻辑,不仅仅能够满足松散代码的功能目的,还能精简重复的代码。函数就是来满足这种场景的解决方案 -- 而函数,也是所谓的面向对象编程的一种表现样式。

函数

	所谓的函数,本质上就是一段能够满足特定功能的代码块。一旦定义好函数代码后,我们就可以在脚本的很多位置随意的使用。
	定义功能代码块的动作叫 函数定义,使用函数代码的动作叫 函数调用。
函数的优势:
	1. 代码模块化,调用方便,节省内存
    2. 代码模块化,代码量少,排错简单
    3. 代码模块化,可以改变代码的执行顺序

基本语法

定义函数:
	样式1:标准格式
    function 函数名{		
        函数体				
    }						
	样式2:简约格式
    函数名() {		
        函数体				
    }
注意:
	function 的作用和 () 的作用是一样的,都是定义一个函数。
	函数的名称是自定义的,而且在脚本范围内必须唯一。
	函数体内是普通的能够正常执行的命令,命令的执行流程符合顺序逻辑。
调用函数:			
	函数名					
注意:
	函数名出现在任何位置,就代表在该位置调用函数内代码块的执行。
	函数名一般在函数定义后调用,否则的话会发生报错。

简单实践

实践1-标准函数的实践

[root@localhost ~]# cat function_simple_test.sh
#!/bin/bash
# 功能:简单函数的定义和调用

# 定制一个函数,提示脚本的使用方式
function Usage {
    echo -e "\e[31m脚本的使用帮助信息: xxx\e[0m"
}

# 定制脚本使用逻辑
if [ $# -eq 1 ]
then
    echo "您输入的脚本参数是1个"
else
    Usage
fi
脚本执行效果
[root@localhost ~]# /bin/bash function_simple_test.sh
脚本的使用帮助信息: xxx
[root@localhost ~]# /bin/bash function_simple_test.sh aa
您输入的脚本参数是1个
[root@localhost ~]# /bin/bash function_simple_test.sh aa bb
脚本的使用帮助信息: xxx

实践2-变种函数的实践

[root@localhost ~]# cat function_simple_test2.sh
#!/bin/bash
# 功能:简单函数的定义和调用

# 定制一个函数,提示脚本的使用方式
Usage() {
    echo -e "\e[31m脚本的使用帮助信息: xxx\e[0m"
}

# 定制脚本使用逻辑
if [ $# -eq 1 ]
then
    echo "您输入的脚本参数是1个"
else
    Usage
fi
脚本执行效果
[root@localhost ~]# /bin/bash function_simple_test2.sh
脚本的使用帮助信息: xxx
[root@localhost ~]# /bin/bash function_simple_test2.sh aa
您输入的脚本参数是1个
[root@localhost ~]# /bin/bash function_simple_test2.sh aa bb
脚本的使用帮助信息: xxx

实践3-函数的调用顺序和名称唯一 实践

[root@localhost ~]# cat function_simple_test3.sh
#!/bin/bash
# 功能:简单函数的定义和调用

# 定制一个函数,提示脚本的使用方式
Usage() {
    echo -e "\e[31m脚本的使用帮助信息: xxx\e[0m"
}
echo "第一次调用效果: "
Usage

# 定制同名的函数,提示脚本的使用方式
Usage() {
    echo -e "\e[31m脚本的使用帮助信息-------: xxx\e[0m"
}
# 定制脚本使用逻辑
if [ $# -eq 1 ]
then
    # 调用一个后面才会生成的函数
    func
else
    Usage
fi

# 定制一个函数
func() {
    echo "您输入的脚本参数是1个"
}

脚本执行效果
[root@localhost ~]# /bin/bash function_simple_test3.sh
第一次调用效果:
脚本的使用帮助信息: xxx
脚本的使用帮助信息-------: xxx
[root@localhost ~]# /bin/bash function_simple_test3.sh a
第一次调用效果:
脚本的使用帮助信息: xxx
function_simple_test3.sh:行18: func: 未找到命令

结果显示:
	函数名称重复的话,会导致同名函数被覆盖
	函数在没有定义前调用的话,会导致异常报错

小结


相关推荐

  1. 课时85流程控制_函数基础_基础知识

    2024-04-05 05:28:05       11 阅读
  2. 课时86流程控制_函数基础_函数退出

    2024-04-05 05:28:05       15 阅读
  3. 课时89流程控制_函数进阶_函数变量

    2024-04-05 05:28:05       12 阅读
  4. 课时77:流程控制_until循环_until基础

    2024-04-05 05:28:05       20 阅读
  5. 课时84流程控制_select条件控制_案例实践

    2024-04-05 05:28:05       13 阅读
  6. 课时90:流程控制_函数进阶_数组传递

    2024-04-05 05:28:05       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-05 05:28:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-05 05:28:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-05 05:28:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-05 05:28:05       18 阅读

热门阅读

  1. Ubuntu22.04虚拟环境安装CUDA10.1, CUDNN和pytorch

    2024-04-05 05:28:05       15 阅读
  2. Qt与OpenCV实现图像模板匹配

    2024-04-05 05:28:05       13 阅读
  3. MySQL中 in 和 exists 区别

    2024-04-05 05:28:05       13 阅读
  4. 使用Python写简单的点云harris 3D关键点检测

    2024-04-05 05:28:05       14 阅读
  5. HDFS、TFS 和 Ceph的对比(通往架构师的路上)

    2024-04-05 05:28:05       9 阅读
  6. JVM剖析

    JVM剖析

    2024-04-05 05:28:05      11 阅读
  7. 图DP

    图DP

    2024-04-05 05:28:05      8 阅读
  8. Linux中关于网络方面常用命令行介绍

    2024-04-05 05:28:05       10 阅读
  9. Megatron-DeepSpeed-GPU-多机训练

    2024-04-05 05:28:05       14 阅读