Lazy loaded image
运维
Bash & Shell 脚本编程
字数 1205阅读时长 4 分钟
2026-2-23
2026-2-23
author
type
Post
status
Published
date
slug
summary
tags
Linux
category
运维
icon
password

概述:什么是 Shell?Bash 又是什么?

  • Shell 是用户与操作系统内核之间的命令解释器。
  • 常见 shell:
    • shBourne Shell,最原始)
    • bashBourne-Again Shell,Linux 默认)
    • zsh(功能更强,macOS 新版本默认)
    • dash(轻量级,Debian 启动用)
本文以 Bash 为主,语法兼容 sh 的大部分内容。

脚本基本结构

✅ 标准格式

💡 小贴士:
  • 文件扩展名可为 .sh(推荐但不是必须)
  • 赋予执行权限:chmod +x hello.sh
  • 运行脚本:./hello.sh

执行 Shell 脚本的 3 种方式

方式
命令
特点
直接执行
./script.sh
需要 +x 权限,启动子 shell
使用 bash 命令
bash script.sh
不需要权限,总是新建进程
源码加载(source)
source script.sh. script.sh
在当前 shell 中执行,变量保留
推荐使用 bash script.sh 进行开发测试。

变量与参数

定义变量

📌 规则:
  • 无空格在 = 两边
  • 变量名只能包含字母、数字、下划线 _,不能以数字开头
  • 默认所有变量是字符串类型

引用变量

只读变量

删除变量


输入输出处理(read / echo / printf)

echo —— 输出文本

printf —— 格式化输出(更强大)

read —— 从键盘读取输入

read 高级用法


条件判断(if、test、[ ]、[[ ]])

基本 if 结构

注意:中括号 [ ] 是一个命令(即 test 命令),左右必须有空格!

示例:比较数值

操作符(整数)
含义
-eq
等于
-ne
不等于
-lt
小于
-le
小于等于
-gt
大于
-ge
大于等于

字符串比较

操作符(字符串)
含义
===
是否相等
!=
是否不等
-z str
字符串为空?
-n str
字符串非空?
💡 推荐使用双引号包裹变量防止出错:[ "$var" = "value" ]

使用 [[ ]](Bash 扩展,功能更强)

支持通配符匹配 *, <, > 比较字符串大小写等。

字符串操作

获取长度

截取子串

替换字符串

提取路径部分(常用于脚本)


数学运算

方法一:$(( )) 整数运算

方法二:expr 命令(旧方式,少用)

⚠️ 注意:* 必须转义:\\*

浮点数计算?用 bc

安装:sudo apt install bcyum install bc

循环结构(for / while / until)

for 循环

标准 for

类 C 风格(需双括号)

遍历数组

while 循环

读取文件每行

until 循环(当条件为假时继续)


函数定义与使用

定义函数

提示:

调用函数

返回值说明

  • return N:返回状态码(0~255),用于判断成功失败
  • 若需返回数据,应使用 echo 输出并捕获:
上一篇
DHCP 服务配置
下一篇
Linux systemd 服务管理