当前位置:首页>Linux>Linux 运维必学(十)| Shell脚本从零入门,全网最清晰核心语法速查

Linux 运维必学(十)| Shell脚本从零入门,全网最清晰核心语法速查

  • 2026-10-11 05:42:42
Linux 运维必学(十)| Shell脚本从零入门,全网最清晰核心语法速查
很多新手学Shell脚本,最大的痛点:知识点杂、规则细碎、报错找不到原因、逻辑看不懂。
今天把Shell必考、实战必用的全套核心语法,整理成一篇轻量化速查手册。
无废话冗余、逻辑由浅入深、自带实操案例,收藏这一篇,搞定80%脚本编写需求。

一、Shell 7大基础语法铁律(必背)

所有脚本报错,80%都是基础规则没吃透!这7条是Shell底层执行逻辑,全局通用。
✅执行顺序:从上到下、从左到右逐行解析,无预编译
✅空格容错:指令、参数之间多空格、Tab缩进,系统自动忽略
✅空行无效:脚本空白行不执行,仅用于排版
✅回车触发:读到回车符,立即尝试执行当前行命令
✅长行续行:代码过长直接回车,自动衔接下一行
✅注释规则:井号后全部为注释,不执行、不解析
✅数值运算:推荐写法 变量=$((运算式))
💡 实操小案例
a=10
b=20
res=$((a+b))
echo $res  # 输出:30

二、脚本两种执行方式(核心区别:进程隔离)

很多人搞不懂 ./、bash、source 的区别,本质是是否新建进程。

1、子程序执行(新建进程|日常最常用)

特点:独立进程,不污染当前终端环境,变量仅临时生效。
▪️ 绝对路径:/home/test/shell.sh
▪️ 相对路径:./shell.sh(需 rx 权限)
▪️ 全局执行:脚本放入 ~/bin,直接输入 shell.sh
▪️ 解释器执行:bash shell.sh / sh shell.sh(仅需读权限)

2、父程序执行(当前进程|配置刷新专用)

指令:source shell.sh 或 . shell.sh
特点:不新建进程,直接在当前终端运行,变量/配置全局生效。
💡 典型场景:source ~/.bashrc 刷新环境变量

三、脚本传参内置变量(高频考点)

执行脚本时传入的参数,靠内置变量接收,是脚本灵活复用的关键。
以命令sh test.sh a b c d 为例:
$0 脚本名 | $1 第一个参数 | $2 第二个参数

1、核心变量释义

▪️ $0:当前执行程序名称(有坑!下文详解)
▪️ $1 $2 ...:顺序接收传入参数(10以上参数需加 ${10})
▪️ $#:统计传入参数总个数
▪️ $@:独立参数列表(官方推荐,参数互相独立)
▪️ $*:全部参数合并为一个整字符串

2、新手必踩坑:$0 的区别

▪️ sh/bash 执行:$0 = 脚本名
▪️ source 执行:$0 = 当前bash名称(不显示脚本名)

3、shift 参数偏移

作用:参数列表左移,剔除前面的参数
示例:shift 2 剔除前2个参数,原$3变为新$1

四、Shell 自定义函数(代码复用神器)

重复代码封装成函数,脚本更简洁、更规范。

1、基础语法

fname() {
业务逻辑
}

2、两条硬性规则

1.先定义、后调用,函数必须写在脚本最顶部
2. 函数内同样支持 $1 $2传参,用法和全局参数一致
💡 实操案例
add() {
echo $(( $1 + $2 ))
}
add 10 20 # 输出结果:30

五、条件判断底层:test 与 [] 语法

Shell所有的判断、分支、循环,底层都依赖 test 检测,[] 是简化写法。
⚠️ 超级重点:[] 内部所有元素必须带空格!
正确写法:[ "$num" -gt 10 ]

1、文件类型判断

-e 文件是否存在 | -f 是否为普通文件 | -d 是否为目录
-L 是否软链接 | -b/-c 设备文件 | -S/-p 套接字/管道文件

2、文件权限判断

-r 可读 | -w 可写 | -x 可执行
-u/-g 特殊权限 | -k 粘滞位 | -s 文件非空

3、文件时间对比

-nt 文件更新 | -ot 文件更旧 | -ef 同一硬链接(同inode)

4、整数数值对比

-eq 相等 | -ne 不等 | -gt 大于 | -lt 小于
-ge 大于等于 | -le 小于等于

5、字符串判断

-z 空字符串 | -n 非空字符串
== 相等 | != 不相等

6、多条件逻辑

-a 与(同时成立) | -o 或(任一成立) | ! 非(取反)

六、分支语句:if / case(脚本逻辑核心)

1、if 条件判断(适合区间、复杂判断)

单层判断

if [ 条件 ]; then
执行逻辑
fi

双层判断(if-else)

if [ 条件 ]; then
成立执行逻辑
else
不成立执行逻辑
fi

多条件判断(if-elif-else)

if [ 条件1 ]; then
逻辑1
elif [ 条件2 ]; then
逻辑2
else
兜底逻辑
fi

2、case 分支匹配(适合固定值精准匹配)

比多层if更简洁,用于匹配固定变量值
case $变量 in
"值1") 执行逻辑 ;;
"值2") 执行逻辑 ;;
*)  默认兜底逻辑 ;;
esac

七、三大循环语法(while / until / for)

循环是自动化脚本的核心,分为「不定循环」和「固定循环」。

1、不定循环:while(用得最多)

条件为真持续循环,条件为假停止
while [ 条件 ]
do
循环逻辑
done

2、不定循环:until

和while完全相反:条件为假循环,为真终止
until [ 条件 ]
do
循环逻辑
done

3、固定循环:for

遍历写法(适配文件、列表)
for var in 1 2 3 4
do
echo $var
done
数值写法(适配固定次数循环)
for ((i=1; i<=5; i++))
do
echo $i
done

八、脚本调试 + 真假返回规则(排错必备)

1、debug 调试参数

sh [-nvx] 脚本.sh
▪️ -n:仅检查语法,不运行代码
▪️ -v:执行前输出完整源码
▪️ -x:分步打印执行过程(排错神器)

2、Shell 真假特殊规则(极易混淆)

和 C/Java 语言完全相反:
✅ 0 = 成功 / 真
❌ 非0 = 失败 / 假

写在最后

这篇文章已经覆盖Shell 入门全部核心语法:基础规则 → 执行方式 → 传参变量 → 函数封装 → 条件判断 → 分支语句 → 循环语法 → 调试排错。
整条链路由浅入深、层层递进,无知识点断层,非常适合新手系统学习、老手日常速查、面试突击背诵。
建议收藏,写脚本报错、忘语法时,直接翻这一篇就够!

最新文章

随机文章