Shell 脚本入门:变量、条件判断与循环
引言
在 Linux 服务器上,每天凌晨备份日志、清理临时文件、检查服务状态,手动操作既耗时又容易出错。Shell 脚本就是把一条条命令组织起来、一次编写多次运行的工具,是运维入门和开发提效的第一步。本文以 Bash 为例,介绍变量、条件判断与循环,并用一个备份小脚本把它们串起来。
一、变量
定义变量时等号两边不能有空格,引用时在变量名前加 $,花括号可以明确变量边界。
name="shell"
count=3
echo "你好,$name"
echo "总数是:${count}个"
系统自带 $HOME(家目录)、$PATH(命令搜索路径)等环境变量;$1、$2 接收命令行参数,$# 表示参数个数。readonly 可把变量设为只读,unset 可以删除变量。
二、条件判断
if 根据命令的退出状态做选择,0 表示成功,非 0 表示失败。数字比较用 -eq、-gt、-lt;文件判断用 -f、-d、-e。
if [ -f "/var/log/app.log" ]; then
echo "日志文件存在"
else
echo "日志文件不存在"
fi
分支较多时用 case 按模式匹配,比一长串 elif 更清晰;字符串比较建议用 [[ ]],对空格和空值更宽容。
三、循环
for 适合次数确定的任务,while 适合条件成立就一直做的任务。
for i in 1 2 3; do
echo "第 $i 次"
done
n=1
while [ $n -le 3 ]; do
echo "正在处理第 $n 项"
n=$((n + 1))
done
break 可以提前跳出循环,continue 跳过本次进入下一次。写循环一定要确认退出条件,否则脚本会一直跑下去。
四、实战:备份日志
#!/bin/bash
src="/var/log"
dst="/backup/$(date +%Y%m%d)"
mkdir -p "$dst"
for file in "$src"/*.log; do
[ -f "$file" ] && cp "$file" "$dst/" && echo "已备份:$file"
done
变量记录源目录和按日期生成的目标目录,循环逐个处理日志文件,判断过滤掉不存在的文件。保存为 backup.sh,执行 chmod +x backup.sh 后即可运行,配合定时任务就能自动备份。
结尾
变量负责记住数据,条件判断负责做选择,循环负责重复执行,三者组合就能把大部分日常重复工作写成脚本。建议从备份、清理这类小任务练起:先在测试目录跑通,再用到真实环境;多用 echo 打印中间结果,出问题也更容易定位。掌握这三块基础,就迈出了 Shell 入门最关键的一步。
- 点赞
- 收藏
- 关注作者
评论(0)