我们一起来学Shell - 初识shell


我们一起来学Shell - shell的变量


我们一起来学Shell - shell的条件判断


我们一起来学Shell - shell的循环控制


我们一起来学Shell - shell的数组


我们一起来学Shell - shell的函数


我们一起来学Shell - shell的并发及并发控制


我们一起来学Shell - 正则表达式

Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可

定义函数

  • 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
function name () {
commands
[return value]
}
name () {
commands
[return value]
}
  • function 是 Shell 中的关键字,专门用来定义函数;

  • name 是函数名称;

  • commands 是函数要执行的代码,也就是一组语句;

  • return value 表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。

  • 由 { } 包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。

  • 函数的优势

    • 方便n次使用,减少代码量,使之方便,整洁。
    • 当需要修改里面的重复代码时,只需要修改一次函数即可实现需求;
    • 将函数写进文件,需要时直接通过文件调用

执行不带参数的函数

直接输入函数名即可,不需要带括号

functionName
  • 执行函数时,函数名称前的关键字function和函数名称后面的()均不需要带上
  • 函数的定义必须要在执行的程序前定义或加载

执行带参数的函数

functionName arg1 arg2
  • Shell中的位置参数($1,$2$#,$?,$@)均可以做为函数的参数进行传递
  • $0比较特殊,仍然是父脚本的名称
  • 此时父脚本的参数会临时被函数的参数所掩盖或隐藏
  • 函数的参数变量是在函数体内里面进行定义

函数的执行总结

  • Shell各种程序的执行顺序为:系统别名->函数->系统命令->可执行文件等
  • 函数执行时,会和调用它的脚本共享变量,也可以为函数设定局部变量及特殊位置参数
  • 在Shell函数里面,return和exit功能类似,区别是
    • return是退出函数

      • return语句会返回一个值给调用函数的程序
    • exit则是退出脚本
      • exit则会返回一个值给执行当前脚本的Shell
  • 如果将函数单独存放为一个文件,在加载时需要使用source.进行加载
  • 在函数内部一般使用local定义局部变量仅在函数体内有效

我们一起来学Shell - shell的函数的更多相关文章

  1. 我们一起来学Shell - shell的并发及并发控制

    文章目录 bash的并发 未使用并发的脚本 简单修改 使用wait命令 控制并发进程的数量 文件描述符 查看当前进程打开的文件 自定义当前进程用描述符号操作文件 管道 我们一起来学Shell - 初识 ...

  2. 我们一起来学Shell - shell的数组

    文章目录 什么是数组 数组中常用变量 数组的定义 小括号定义数组变量 小括号加键值对定义数组变量 分别定义数组变量 动态地定义数组变量 数组赋值的切片 遍历数组 关联数组 我们一起来学Shell - ...

  3. 我们一起来学Shell - shell的循环控制

    文章目录 Shell 循环之 for 语句 Shell 循环之 while 语句 Shell 循环之 until 语句 Shell 循环控制 break指令 continue 指令 exit 指令 s ...

  4. 我们一起来学Shell - shell的条件判断

    文章目录 Shell 条件测试语法 符号说明 Shell 测试表达式 文件测试表达式 字符串测试表达式 整数操作符 逻辑操作符 测试表达式的区别总结 Shell 条件判断之if语句 单分支 IF 条件 ...

  5. shell流程控制&函数

    条件 if-then-elif-then-fi if的条件部分经常使用test EXPRESSION或[ EXPRESSION ]实现,test的用法可以参见test if 条件1 #if 条件1;t ...

  6. shell实现trim函数-去除字符串两侧的空格(包括tab,space键)

    shell实现trim函数效果去除字符串两侧的空格,以下三个命令等价,都能实现 sed 's/^\s*//' totrim.txt |sed 's/\s*$//'>trimed.txtsed ' ...

  7. shell中的函数、数组、报警系统脚本

    1.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这 个小单元的名字即可.格式: function f_name() {commond} ...

  8. shell编程之函数

    一.函数定义和调用 函数是Shell脚本中自定义的一系列执行命令,一般来说函数应该设置有返回值(正确返回0,错误返回非0).对于错误返回,可以定义其他非0正值来细化错误.使用函数最大的好处是可避免出现 ...

  9. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

随机推荐

  1. Go语言实战-爬取校花网图片

    一.目标网站分析 爬取校花网http://www.xiaohuar.com/大学校花所有图片. 经过分析,所有图片分为四个页面,http://www.xiaohuar.com/list-1-0.htm ...

  2. HDUA/B

    同样求逆元的题目,费马的条件,首先要保证p为质数,然后保证a与p互素. 数据范围问题,要保证在数据范围内,所以要b先模上mod #include<bits/stdc++.h> using ...

  3. Kube-OVN1.5.0新版本发布,支持鲲鹏云平台网络平面部署

    近日,Kube-OVN发布了最新的1.5.0版本.自2019年4月开源以来,Kube-OVN经历了15次重要版本迭代,以及社区成立,建设者贡献代码,稳定性测试,国内外用户开始在生产环境中投入使用,企业 ...

  4. 带你自定义实现Spring事件驱动模型

    Spring 事件驱动模型概念 Spring 事件驱动模型就是观察者模式很经典的一个应用,我们可以通过Spring 事件驱动模型来完成代码的解耦. 三角色 Spring 事件驱动模型或者说观察者模式需 ...

  5. IDEA maven 项目修改代码不生效,mvn clean、install 后才生效

    Maven项目进行修改代码后我们重新运行代码,查看我们target目录下的class文件是否发生了变化.    如何查看class文件,鼠标移到项目,点击右键,然后点击 show in Explore ...

  6. 《剑指offer》面试题14- I. 剪绳子

    问题描述 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]*k[1]* ...

  7. Exception in thread “main“ java.net.ConnectException: Call From

    问题描述:#报错语句:FileSystem fs = FileSystem.get(new URI("hdfs://hadoop000:8020"),new Configurati ...

  8. Java高效开发-常用idea插件

    这里推荐几个常用的idea插件,可以大大提高开发的效率 所使用的idea版本为 2021.2.3 1.Jrebel and Xrebel for IntelliJ Jrebel用于热部署,避免频繁重启 ...

  9. 不难懂-----redux

    一.flux的缺陷 因为dispatcher和Store可以有多个互相管理起来特别麻烦 二.什么是redux 其实redux就是Flux的一种进阶实现.它是一个应用数据流框架,主要作用应用状态的管理 ...

  10. 【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found -- The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

    问题描述 使用NodeJS的后端应用,开发一个Mobile App的服务端,手机端通过REST API来访问获取后端数据.在本地编译好后,通过npm start启动项目,访问效果如下: 但是,当把项目 ...