我的 Bash 脚本编码规则
发布: (2026年1月19日 GMT+8 18:39)
4 min read
原文: Dev.to
Source: Dev.to

此集合现在包括简单和复杂函数的示例,带参数和不带参数,提供 Bash 脚本编码的全面参考。它从基础开始,逐步深入到不常用的解决方案。
1. Shebang
在每个脚本的开头使用 shebang 行,以指明要使用的解释器:
#!/bin/bash
2. 权限
确保脚本具有执行权限:
chmod +x script_name.sh
3. 注释
使用注释来解释代码:
# This is a comment
4. 变量
变量声明
声明变量时等号两侧不要加空格:
name="value"
默认值 – 使用 ${variable:-default_value} 在变量未定义时设置默认值:
name=${name:-"default_value"}
变量处理
大写
uppercase=${name^^}
小写
lowercase=${name,,}
首字母大写
capitalize=${name^}
内联字符替换 – 替换子串的所有出现:
new_name=${name//old/new_value}
5. 输入参数
Bash 脚本可以接收输入参数,这些参数可以以多种方式进行处理:
| Symbol | Description |
|---|---|
$1, $2, … | 位置参数($1 是第一个参数,$2 是第二个,依此类推) |
$# | 传入的参数数量 |
$@ | 以列表形式提供所有参数(在循环中很有用) |
$* | 将所有参数作为单个字符串 |
$? | 上一个执行命令的返回码 |
示例
# $1, $2, …
echo "First parameter: $1"
# $#
echo "Number of parameters: $#"
# $@
for param in "$@"; do
echo "Parameter: $param"
done
# $*
echo "All parameters: $*"
# $?
echo "Return code: $?"
6. 条件
使用 if … then … else … fi 来编写条件结构:
if [ condition ]; then
# commands
else
# other commands
fi
7. case(Switch‑Case)结构
使用 case 更加可读地处理多个条件。用空格分隔可能的取值:
case $variable in
value1 | value2 | value3)
# commands for value1, value2, or value3
;;
value4)
# commands for value4
;;
*)
# default commands
;;
esac
8. 函数
简单函数(无参数)
my_simple_function() {
echo "This is a simple function."
}
# 调用函数
my_simple_function
带参数的函数
my_function_with_parameters() {
param1=$1
param2=$2
echo "Parameter 1: $param1"
echo "Parameter 2: $param2"
}
# 使用参数调用函数
my_function_with_parameters "value1" "value2"
复杂函数(处理逻辑 & 多个参数)
my_complex_function() {
name=$1
age=$2
if [ "$age" -lt 18 ]; then
echo "$name is a minor."
else
echo "$name is an adult."
fi
}
# 调用复杂函数
my_complex_function "Alice" 20
my_complex_function "Bob" 15
9. 变量测试
测试比较符
字符串比较
| 运算符 | 含义 |
|---|---|
== | 相等 |
!= | 不相等 |
> | 大于(字典序) |
if [ "$string1" == "$string2" ]; then
echo "The strings are identical"
fi
数值比较
| 运算符 | 含义 |
|---|---|
-eq | 相等 |
-ne | 不相等 |
-lt | 小于 |
-gt | 大于 |
-le | 小于或等于 |
-ge | 大于或等于 |
if [ "$number1" -lt "$number2" ]; then
echo "$number1 is less than $number2"
fi
10. 循环
使用 for、while 或 until 循环进行迭代:
for i in {1..5}; do
echo "$i"
done
11. 错误处理
使用 $? 检查错误,并使用 set -e 在出现任何错误时停止脚本:
set -e
12. 使用 set
将未定义的变量视为错误,可使用 set -u:
set -u
13. 输出
使用 echo 显示消息或结果:
echo "Message"
14. 使用 trap
处理信号并在退出前执行清理:
trap 'cleanup_command' EXIT
15. 最佳实践
- 避免使用含糊的变量名。
- 使用描述性的文件名。
- 在将脚本投入生产环境之前,在安全的环境中进行测试。