怎么在 10 分钟内入门 Shell 脚本编程?

文章导读
10 分钟足以跑通第一个脚本并理解基本结构,适合处理简单的文件操作或命令批量执行。不要指望这时候就能写复杂逻辑,但能解决日常重复性工作。
📋 目录
  1. 快速上手步骤
  2. 进阶:逻辑与交互
  3. 实战案例:批量备份文件
  4. 验证与排查
  5. 常见坑
  6. 参考来源
A A

10 分钟足以跑通第一个脚本并理解基本结构,适合处理简单的文件操作或命令批量执行。不要指望这时候就能写复杂逻辑,但能解决日常重复性工作。

核心摘要:10 分钟可掌握 Shell 脚本的最小可行知识,能编写简单的自动化任务,复杂逻辑需后续积累。

  • 适用场景:自动化重复命令、简单文件处理
  • 关键步骤:声明解释器、变量赋值、赋予执行权限
  • 安全建议:先在测试环境运行,确认无误后再用于生产

快速上手步骤

使用任意文本编辑器创建文件,推荐 vimnano

vim myscript.sh

文件第一行必须写 Shebang,告诉系统用哪个 Shell 执行。

#!/bin/bash

尝试定义变量、接收用户输入和输出。

怎么在 10 分钟内入门 Shell 脚本编程?
NAME="User"
echo "Hello $NAME"
read -p "Enter your name: " INPUT
echo "You entered: $INPUT"

默认新建文件没有执行权限,需要手动添加并使用相对路径运行。

chmod +x myscript.sh
./myscript.sh

进阶:逻辑与交互

脚本不仅仅是命令堆叠,涉及逻辑判断时才需要深入语法。以下是条件判断和循环的基础用法。

条件判断:检查文件是否存在。

if [ -f "config.txt" ]; then
    echo "File exists"
else
    echo "File missing"
fi

简单循环:遍历当前目录下的 txt 文件。

怎么在 10 分钟内入门 Shell 脚本编程?
for file in *.txt; do
    echo "Processing $file"
done

实战案例:批量备份文件

结合变量、循环和命令,实现一个简单的备份脚本。

#!/bin/bash
BACKUP_DIR="./backup_$(date +%F)"
mkdir -p "$BACKUP_DIR"

for file in *.log; do
    if [ -f "$file" ]; then
        cp "$file" "$BACKUP_DIR/"
        echo "Backed up $file"
    fi
done
echo "Backup completed"

验证与排查

观察终端是否有预期输出,并检查退出状态码。

echo $?

如果输出 0 表示脚本正常结束,非 0 表示出错。也可以在脚本末尾显式添加 exit 0 来确保状态码可控。

运行前建议使用 bash -n 检查语法错误,避免直接执行导致意外。

bash -n myscript.sh

常见坑

  • 空格问题:变量赋值时等号两边不能有空格,NAME="User" 是对的,NAME = "User" 会报错。
  • 换行符问题:如果在 Windows 下编辑脚本,可能会带入 \r 字符,导致解释器找不到。建议在 Linux 环境下编辑,或使用 dos2unix 转换。
  • 权限不足:忘记 chmod +x 会导致 Permission denied,或者直接用 bash myscript.sh 运行绕过权限检查。
  • 变量引用:引用变量最好加双引号,如 "$VAR",防止变量内容为空或含空格时命令解析错误。

参考来源