0Pricing
Linux Server Deployment & SSH Mastery · 课时

函数、参数与可复用脚本

让 Bash 脚本实现模块化且易于维护:定义函数、传递并验证命令行参数、返回值,并组织能够复用于多种服务器自动化任务的脚本。

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

从脚本到工具

您已经能够编写脚本、自动执行任务并处理错误。下一步是让脚本可复用:将代码组织成能够接收参数的函数,使一个脚本可以应对多种情况。

这正是一次性脚本成为真正管理工具的方式。

定义函数

Bash 函数会将命令归组到一个名称下。定义一次后即可多次调用。函数体位于大括号之间。

greet() {
  echo 'Hello from the function!'
}

greet

向函数传递参数

函数按位置接收参数:$1、$2 等。$@ 表示所有参数,$# 表示参数数量。

greet() {
  echo "Hello, $1! You are $2 years old."
}

greet Alice 30

脚本级参数

相同的位置变量也适用于整个脚本。运行 ./deploy.sh staging v2 后,脚本会将 $1 读取为“staging”,将 $2 读取为“v2”。

#!/bin/bash
ENV=$1
VERSION=$2
echo "Deploying $VERSION to $ENV"

验证参数

可靠的工具会检查输入。请确认参数数量符合预期;如果缺少参数,则显示用法消息并退出。

if [ $# -lt 2 ]; then
  echo "Usage: $0 <env> <version>"
  exit 1
fi

从函数返回状态

函数通过 return 返回退出状态(0 = 成功)。调用者可以使用 $?,或直接在 if 中检查该状态。

is_root() {
  [ "$(id -u)" -eq 0 ]
}

if is_root; then echo 'root'; else echo 'not root'; fi

从函数返回数据

要返回实际数据(而不只是状态),请使用 echo 输出数据,并通过命令替换捕获。调用者会将输出赋给一个变量。

timestamp() {
  date +%Y%m%d_%H%M%S
}

NOW=$(timestamp)
echo "Backup name: backup_$NOW"

局部变量

默认情况下,Bash 变量是全局变量,这会导致函数之间出现错误。请使用 local 声明函数内部变量,使其彼此隔离。

add() {
  local result=$(( $1 + $2 ))
  echo $result
}

echo "Sum: $(add 3 4)"

默认值和命名标志

使用参数展开提供合理的默认值,并解析标志,让工具更易于使用。

  • ${1:-default} — 如果 $1 未设置,则使用“default”
  • getopts — 解析 -v、-f file 形式的标志
ENV=${1:-staging}
echo "Target environment: $ENV"

引入函数库

将共享函数放入单独的文件中,并在多个脚本中使用 source 引入。这样可以避免在各处重复粘贴辅助函数。

# in lib.sh: define log(), is_root(), etc.
source ./lib.sh
log 'Starting deployment'

最佳实践

编写易于维护的脚本:

  • 将逻辑拆分为小型的命名函数
  • 始终验证参数并显示用法
  • 对函数变量使用 local
  • 通过引入函数库文件共享辅助函数

快速检查

测试您对 Bash 函数的了解。

回顾

现在,您已经能够构建可复用的 Bash 工具:

  • 定义函数并反复调用
  • 传递并验证参数($1、$@、$#)
  • 使用 return 返回状态,并通过 echo + 命令替换返回数据
  • 使用 local 变量和 source 共享函数库

这些模式可以将一次性脚本转变为易于维护的自动化工具集。

常见问题解答

「函数、参数与可复用脚本」课时是免费的吗?

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

「函数、参数与可复用脚本」这节课中我会学到什么?

让 Bash 脚本实现模块化且易于维护:定义函数、传递并验证命令行参数、返回值,并组织能够复用于多种服务器自动化任务的脚本。 你通过在浏览器中直接运行的动手代码来练习 Linux Server Deployment & SSH Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Linux Server Deployment & SSH Mastery 需要有经验吗?

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

「函数、参数与可复用脚本」课时需要多长时间?

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

我能在这节 Linux Server Deployment & SSH Mastery 课中编写并运行代码吗?

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

此课程中的所有课时

  1. Bash 脚本入门
  2. 自动化服务器任务
  3. 脚本中的错误处理与日志记录
  4. 函数、参数与可复用脚本
← 返回 Linux Server Deployment & SSH Mastery