0Pricing
DevOps Bootcamp · 课时

Shell 函数与可复用代码片段

定义并使用 Bash 函数,将命令封装为可复用、可参数化的 Shell 构建单元。

Shell 函数与可复用代码片段 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

为什么使用 shell 函数

Shell 函数可以将一组命令归于一个名称之下,以便重复使用而无需重新输入。

  • 比复制粘贴命令更快
  • 比冗长的别名更整洁
  • 可以接受参数,而别名不能
mkcd() {
  mkdir -p "$1" && cd "$1"
}

定义函数

最简单的形式使用 name() { ... } 语法。大括号中的命令会在您按名称调用函数时运行。

greet() {
  echo "Hello from a function"
}
greet

函数参数

函数接收位置参数,就像脚本一样:$1、$2。$# 表示数量,$@ 会展开为所有参数。

backup() {
  cp "$1" "$1.bak"
  echo "Backed up $1"
}
backup notes.txt

返回值与退出状态

函数通过 return N 返回退出状态(0-255)。请将其用于成功或失败检查,而不要用于返回数据。

is_root() {
  [ "$(id -u)" -eq 0 ] && return 0 || return 1
}
if is_root; then echo root; else echo normal; fi

通过 echo 返回输出

由于 return 只能传递状态代码,实际输出应使用 $( ) 打印并捕获。

timestamp() {
  date +%Y%m%d-%H%M%S
}
name="log-$(timestamp).txt"
echo "$name"

局部变量

默认情况下,函数中的变量是全局变量。使用 local 将变量的作用域限制在函数内,避免污染 shell。

count_lines() {
  local n
  n=$(wc -l < "$1")
  echo "$1 has $n lines"
}

默认参数值

使用参数展开 ${1:-default},在参数缺失时回退到默认值。

say() {
  local msg="${1:-Hello World}"
  echo "$msg"
}
say
say "Custom message"

函数与别名

别名只是替换文本,无法简洁地接收位置参数。函数可以进行分支、循环和输入处理。

  • 固定快捷方式请使用别名
  • 需要逻辑或参数时请使用函数
alias ll='ls -la'
lt() { ls -la "${1:-.}" | tail -n "${2:-5}"; }

使函数持久生效

在提示符中定义的函数会在 shell 退出时消失。将它们添加到 ~/.bashrc,即可在每个会话中使用。

# Append to ~/.bashrc
extract() {
  case "$1" in
    *.tar.gz) tar xzf "$1" ;;
    *.zip)    unzip "$1" ;;
    *)        echo "Unknown format" ;;
  esac
}

列出和删除函数

declare -F 会列出函数名称;declare -f name 会显示函数体。使用 unset -f name 删除函数。

declare -F
declare -f greet
unset -f greet

组合函数

函数可以调用其他函数,从而将小型可复用组件组合成更大的工具。

log() { echo "[$(date +%T)] $*"; }
deploy() {
  log "Starting deploy"
  log "Done"
}
deploy

快速检查

检验您对 shell 函数的理解。

回顾

您已经学会构建可复用的 shell函数:

  • 使用 name() { ... } 定义,并通过名称调用
  • 使用 $1、$@、$# 处理参数,并使用 return 返回状态
  • 使用 local 限定变量作用域,通过 echo 返回数据
  • 将函数持久保存到 ~/.bashrc,并使用 declare -f 查看

常见问题解答

「Shell 函数与可复用代码片段」课时是免费的吗?

是的 — 「Shell 函数与可复用代码片段」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「Shell 函数与可复用代码片段」这节课中我会学到什么?

定义并使用 Bash 函数,将命令封装为可复用、可参数化的 Shell 构建单元。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「Shell 函数与可复用代码片段」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 作业控制(bg、fg、jobs)
  2. Shell 展开与通配
  3. 别名与自定义提示符
  4. Shell 函数与可复用代码片段
← 返回 DevOps Bootcamp