博客
关于我
如何在 Bash 中编写函数 | Linux 中国
阅读量:280 次
发布时间:2019-03-03

本文共 1623 字,大约阅读时间需要 5 分钟。

 

本文字数:1791,阅读时长大约:2分钟

导读:通过编写函数来减少代码的冗余和维护。

https://linux.cn/article-12323-1.html

作者:Seth Kenlon
译者:geekpi

通过编写函数来减少代码的冗余和维护。

在编程时,实际上是在定义要由计算机执行的过程(procedure)例程(routine)。一个简单的类比是将计算机编程与烤面包进行比较:你一次列出了要组建工作环境的配料,然后列出了烤面包所必须采取的步骤。在编程和烘烤中,必须以不同的间隔重复执行某些步骤。例如,在烤面包中,这可能是酵母培养的过程:

STIR=100SNOOZE=86400function feed_culture {  remove_from(pantry)  add(flour, water)  stir($STIR)  sleep($SNOOZE)}

然后,揉面和醒发面团: 

KNEAD=600SNOOZE=7200function process_dough {  remove_from(proofing_drawer)  knead($KNEAD)  return_to_drawer($SNOOZE)}

在编程中,这些子例程(subroutines)可以表示为函数(function)。函数对程序员很重要,因为它们有助于减少代码中的冗余,从而减少了所需的维护量。例如,在以编程方式烤制面包的假想场景中,如果你需要更改面团醒发的用时,只要你之前使用函数,那么你只需更改一次用时,或使用变量(在示例代码中为 SNOOZE)或直接在处理面团的子程序中更改用时。这样可以节省你很多时间,因为你不必通过你的代码库遍历每个可能正在醒发的面团,更不用说担心错过一个。许多 bug 是由未更改的缺失的值或执行不正确的 sed 命令引起的,它们希望捕获所有可能而不必手动寻找。

在 Bash 中,无论是在编写的脚本或在独立的文件中,定义函数和使用它们一样简单。如果将函数保存到独立的文件中。那么可以将它 source 到脚本中,就像 include C 语言或 C++ 中的库或将模块 import 到 Python 中一样。要创建一个 Bash 函数,请使用关键字 function: 

function foo {# code here}

这是一个如何在函数中使用参数的例子(有些人为设计,因此可能会更简单): 

#!/usr/bin/env bashARG=$1function mimic {  if [[ -z $ARG ]]; then    ARG='world'  fi  echo "hello $ARG"}mimic $ARG

结果如下: 

$ ./mimichello world$ ./mimic everybodyhello everybody

请注意脚本的最后一行,它会执行该函数。对于编写脚本的新手来说,这是一个普遍的困惑点:函数不会自动执行。它们作为潜在的例程存在,直到被调用。

如果没有调用该函数,那么函数只是被定义,并且永远不会运行。

如果你刚接触 Bash,请尝试在包含最后一行的情况下执行示例脚本一次,然后在注释掉最后一行的情况下再次执行示例脚本。 

使用函数

即使对于简单的脚本,函数也是很重要的编程概念。你越适应函数,在面对一个不仅需要声明性的命令行,还需要更多动态的复杂问题时,你就会越容易。将通用函数保存在单独的文件中还可以节省一些工作,因为它将帮助你建立常用的程序,以便你可以在项目间重用它们。看看你的脚本习惯,看是否适合使用函数。


via: https://opensource.com/article/20/6/bash-functions

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

转载地址:http://uavl.baihongyu.com/

你可能感兴趣的文章
2020年G3锅炉水处理报名考试及G3锅炉水处理考试申请表
查看>>
2020年R2移动式压力容器充装答案解析及R2移动式压力容器充装免费试题
查看>>
2020年制冷与空调设备运行操作答案解析及制冷与空调设备运行操作考试总结
查看>>
2020年保育员(初级)考试资料及保育员(初级)新版试题
查看>>
2020年加氢工艺复审考试及加氢工艺作业考试题库
查看>>
2020年茶艺师(高级)考试内容及茶艺师(高级)考试申请表
查看>>
2020年车工(中级)考试内容及车工(中级)答案解析
查看>>
2021年烟花爆竹经营单位安全管理人员考试及烟花爆竹经营单位安全管理人员考试试卷
查看>>
2021年过氧化工艺试题及答案及过氧化工艺考试平台
查看>>
2021年煤矿安全检查考试APP及煤矿安全检查模拟考试题库
查看>>
2021年重氮化工艺考试题库及重氮化工艺考试报名
查看>>
2021年车工(高级)考试总结及车工(高级)试题及答案
查看>>
2021年压力焊证考试及压力焊实操考试视频
查看>>
2021年低压电工考试及低压电工考试申请表
查看>>
2021年低压电工考试及低压电工考试申请表
查看>>
2021年低压电工考试及低压电工考试申请表
查看>>
2021年低压电工考试APP及低压电工作业模拟考试
查看>>
2021年A特种设备相关管理(电梯)考试APP及A特种设备相关管理(电梯)复审考试
查看>>
2021年美容师(初级)考试报名及美容师(初级)新版试题
查看>>
2021年N1叉车司机考试题及N1叉车司机复审模拟考试
查看>>