我的 Bash 脚本编码规则

发布: (2026年1月19日 GMT+8 18:39)
4 min read
原文: Dev.to

Source: Dev.to

我的 Bash 脚本编码规则封面图

此集合现在包括简单和复杂函数的示例,带参数和不带参数,提供 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 脚本可以接收输入参数,这些参数可以以多种方式进行处理:

SymbolDescription
$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. 循环

使用 forwhileuntil 循环进行迭代:

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. 最佳实践

  • 避免使用含糊的变量名。
  • 使用描述性的文件名。
  • 在将脚本投入生产环境之前,在安全的环境中进行测试。
Back to Blog

相关文章

阅读更多 »

为什么 Bash 语法如此晦涩

Bash的历史根源 Bash在Linux的表面之下深深扎根。只需一两行代码,它就能完全控制你的机器。它常常被视为b...

Linux教程:日志转CSV到JSON

设置目录 bash mkdir -p tutorial cd tutorial 生成示例日志 bash 在 tutorial 文件夹内生成日志 echo '2026-01-18 05:42:09 | INFO | system...'