跳转至

第 17 章 创建函数

约 153 个字 37 行代码 1 张图片 预计阅读时间 1 分钟

函数封装逻辑;作用域、返回值、数组与库文件。

17.1 定义与调用

Bash
func1() {
  echo "Hello $1"
}
func1 arg

function func2 { ... }   # 旧语法

必须在调用前定义(或 source 库文件)。

17.2 返回值

Bash
func() { return 3; }    # 退出码 0–255
func
echo $?                 # 3

func() { echo "result"; }
result=$(func)          # 捕获输出

17.3 变量作用域

Bash
global=1
func() {
  local localvar=2      # 局部
  global=99
}

17.4 数组与函数

Bash
func() {
  echo "First: ${array[0]}"
}
array=(a b c)
func
# 传递数组:func "${array[@]}"

17.5 递归

Bash
factorial() {
  if [ $1 -eq 1 ]; then echo 1
  else echo $(( $1 * $(factorial $(( $1 - 1 ))) ))
  fi
}

17.6 函数库

Bash
# lib.sh
func1() { ... }

# main.sh
source /path/lib.sh     # 或 . lib.sh
func1

17.7 命令行函数

Bash
# 临时
dive() { cd $1; ls; }
# 持久:写入 ~/.bashrc

评论