Bash:
将代码组织成函数

如何操作:

在Bash中创建一个简单的函数:

greet() {
  echo "你好,$1!"
}

通过带参数调用函数来使用它:

greet "世界"  # 输出:你好,世界!

函数可以使用 return 返回数值状态码(不用于实际数据返回):

add() {
  return $(($1 + $2))
}

add 3 4
echo $?  # 输出:7

请注意 $? 捕获上一个命令的返回值,这是 add 的数值结果。

深入探讨

在Bash中,函数自早期版本以来一直是分隔代码的一种方式。从历史上看,使用函数符合20世纪60年代引入的结构化编程原则,这些原则旨在提高代码质量。

函数的替代方法包括源代码文件或使用别名,但这些不能提供同等级别的模块化和重用。

Bash中一个值得注意的实现细节是,函数是一等公民;它们没有像其他语言中的 function 那样的特定声明关键字,尽管在Bash中为了可读性,function 是可选的。函数作用域也很有趣——变量默认是全局的,除非声明为局部的,如果不正确管理,可能会导致意外的行为。

另请参阅

  • Bash手册上关于Shell函数的部分:https://www.gnu.org/software/bash/manual/html_node/Shell-Functions.html
  • 高级Bash脚本编程指南:https://tldp.org/LDP/abs/html/functions.html
  • 《Pro Bash Programming: Scripting the GNU/Linux Shell》一书,深入探讨函数脚本编写的概念和实践。