Linux Shell 脚本入门、执行方式与批量压解实战
一、前言
Shell 脚本是 Linux 运维自动化的核心工具,本质是将多条 Linux 命令按逻辑顺序写入文本文件,批量自动执行。日常重复操作、定时备份、服务巡检、批量处理文件都可以用脚本实现,大幅提升效率。本文从脚本格式规范讲起,重点讲解主流执行方式、运行环境差异,是学习 Shell 编程的第一步。
二、Shell 脚本基础规范
1. 脚本第一行(解释器声明)
脚本首行必须指定解析器,标准写法:
bash
运行
#!/bin/bash#!:魔法标记,告诉系统使用哪个解释器运行脚本/bin/bash:指定使用 Bash 解释器(Linux 默认 Shell)- 也可写
#!/bin/sh,兼容性更强,功能比 bash 少
2. 注释规则
以#开头的内容为注释,脚本执行时会忽略,用于写说明、备注:
bash
运行
# 这是单行注释 #!/bin/bash echo "Hello Shell" # 行内注释3. 编写第一个测试脚本
- 创建脚本文件
bash
运行
vim first.sh- 写入以下内容
bash
运行
#!/bin/bash # 我的第一个Shell脚本 echo "========== 系统信息 ==========" echo "当前所在目录:$(pwd)" echo "当前登录用户:$(whoami)" ls -l- 保存退出(
ESC→:wq)
三、Shell 脚本 4 种执行方式(重点)
针对上面first.sh,逐一演示执行方式、权限要求、运行环境、适用场景。
方式 1:使用 sh /bash 解释器执行(推荐)
特点:不需要给脚本添加执行权限,最简单、调试首选。
bash
运行
# 用 bash 执行 bash first.sh # 用 sh 执行(兼容老旧系统) sh first.sh运行环境:开启子 Shell,脚本内切换目录、修改变量,不会影响当前终端。
方式 2:绝对路径 / 相对路径执行
前提:脚本必须拥有执行权限 (x)。
第一步:添加执行权限
bash
运行
chmod +x first.sh第二步:执行脚本
bash
运行
# 相对路径(当前目录) ./first.sh # 绝对路径(示例,根据实际路径修改) /root/first.sh运行环境:同样开启子 Shell,和bash/sh行为一致。
方式 3:source 或。点命令执行
特点:不需要执行权限,在当前 Shell 终端中运行,不开启子 Shell。
bash
运行
# 完整写法 source first.sh # 简写写法(点 + 空格 + 脚本名) . first.sh核心区别演示
在脚本中加入切换目录命令:
bash
运行
#!/bin/bash cd /opt pwd使用source执行后,当前终端会直接切换到 /opt 目录;使用bash/./执行,终端目录不会变化。
适用场景:加载环境变量、读取配置文件、临时切换工作目录。
方式 4:后台后台运行脚本(常驻 / 静默执行)
适用于长时间运行的脚本,关闭终端也不中断,搭配&使用。
bash
运行
# 后台运行,日志输出到空(静默) bash first.sh > /dev/null 2>&1 &四、四种执行方式核心对比表
表格
| 执行方式 | 是否需要执行权限 | 是否开启子 Shell | 主要用途 |
|---|---|---|---|
bash/sh 脚本名 | 不需要 | 是 | 日常调试、通用执行 |
./脚本名 | 需要chmod +x | 是 | 标准脚本运行、规范上线 |
source / . 脚本名 | 不需要 | 否 | 加载配置、环境变量 |
脚本名 &后台执行 | 按需 | 是 | 长时间任务、无人值守 |
五、基础语法补充(入门必看)
1. 简单变量使用
bash
运行
#!/bin/bash # 定义变量,等号两边不能有空格 name="Shell脚本" # 调用变量,加 $ echo "正在学习:$name"2. 命令嵌套$(命令)
把一条命令的执行结果,嵌入另一条命令中:
bash
运行
echo "当前时间:$(date)"六、常见报错与避坑
1.-bash: ./first.sh: 权限不够
原因:缺少执行权限 → 解决:chmod +x first.sh
2.脚本路径带中文 / 空格
尽量使用纯英文路径,Linux 对空格、中文兼容性差。
3.Windows 编辑脚本,执行报$'\r': 未找到命令
原因:换行符格式错误 → 修复:dos2unixfirst.sh
4.脚本内cd切换目录不生效
原因:使用了子 Shell 执行(bash/./),属于正常现象;需要全局切换请用source。
七、快速命令汇总
bash
运行
# 1. 赋执行权限 chmod +x 脚本名.sh # 2. 常用执行命令 bash 脚本名.sh ./脚本名.sh source 脚本名.sh . 脚本名.sh # 3. 修复Windows换行符 dos2unix 脚本名.sh八、总结
- 脚本首行
#!/bin/bash是标准格式,不可省略; - 日常学习、调试优先用
bash脚本名,不用纠结权限; - 正式运行脚本推荐
chmod +x+./脚本名; - 加载配置、环境变量必须使用
source执行; - 长时间运行的脚本放到后台执行。
