shell脚本编程核心是变量、条件判断与循环三者配合实现自动化:变量需规范命名赋值引用;条件判断依赖命令退出码,常用[ ]语法;循环按场景选for、while或until。

Shell脚本编程的核心就是用简洁的方式把重复操作自动化。变量存数据,条件判断做选择,循环处理批量任务——三者配合,就能写出真正有用的脚本。
变量:命名、赋值与引用要规范
变量是脚本里最基础的“容器”,但容易出错的地方恰恰在细节:
- 定义时等号两边绝对不能有空格,比如 name="Alice" 正确,name = "Alice" 会报错
- 变量名只能以字母或下划线开头,区分大小写,避免用 if、for 这类关键字
- 引用变量必须加 $ 符号,如 echo "$name";推荐用双引号包裹,防止空格或特殊字符引发意外分词
- 环境变量(如 PATH)全局生效,用 export VAR=value 声明;普通变量只在当前 Shell 有效
条件判断:靠命令退出码决定分支走向
Shell 的 if 不看“真假值”,而是看前一条命令是否成功(退出码为 0)。常用判断方式有几种:
- [ ] 是最常用也最稳妥的语法,注意中括号和内容之间要有空格,比如 [ -f "/etc/passwd" ]
- 比较字符串用 = 或 ==(后者仅在 [[ ]] 中支持),数值比较用 -eq、-gt 等操作符
- 防空参数:如果变量可能为空,写成 [ "$var" = "yes" ] 比 [ $var = "yes" ] 更安全
- 多条件组合可用 -a(且)、-o(或),或用 [[ ]] 中的 &&、||
循环:按需选 for、while 或 until
三种循环适用场景不同,别硬套一种:
- for 适合已知范围或列表遍历,比如 for i in {1..5}; do echo $i; done 或 for file in *.log; do ...
- while 关注“条件成立时持续执行”,常用于读取文件行、监控服务状态等不确定次数的场景
- until 和 while 相反,是“条件不成立时才执行”,比如重试机制:until ping -c1 google.com &>/dev/null; do sleep 2; done
- 循环内可用 break 提前退出,continue 跳过本轮,避免逻辑卡死
掌握这三块,再配上函数封装和简单输入输出(如 read、echo),日常运维脚本基本都能覆盖。不复杂,但每处空格、引号、退出码都得留神。











