返回列表 发布新帖
查看: 23|回复: 0

Shell脚本从零到精通:变量、条件与循环实战全解析

988

主题

0

回帖

833

积分

高级会员

积分
833
发表于 2026-6-25 02:35:01 | 查看全部 |阅读模式
聊聊 Shell 脚本入门这件事,很多人一开始都觉得它神秘,好像只有老运维才玩得转。其实不是的,Shell 脚本的核心逻辑并不复杂,只要把变量、条件、循环这三块基础吃透,日常工作里大量的重复操作都可以自动化掉。我自己是从一个完全不懂命令行的人开始学的,踩过不少坑,今天就把最实用的那些东西写出来,希望对刚入门的朋友有帮助。

先说变量。Shell 里定义变量非常简单,直接写 name="张三" 就行了,但有一个地方特别容易出错:等号两边绝对不能有空格,否则脚本会报错,新手十个里面有八个在这里踩过坑。使用变量的时候要加美元符号,写成 $name 或者 ${name},建议养成加花括号的习惯,这样在字符串拼接的时候不容易出问题。比如你想输出"你好,张三先生",就可以写 echo "你好,${name}先生",花括号明确告诉 Shell 变量名到哪里结束,非常清晰。另外还有一类特殊变量,比如 $0 表示脚本自身的名字,$1、$2 表示传入的第一个、第二个参数,$# 表示参数的总数量,这些在写通用脚本的时候会频繁用到。

接下来是条件判断,也就是 if 语句。基本结构是 if [ 条件 ]; then ... fi,注意中括号里面两边都要有空格,这是 Shell 的语法规定,不加空格直接报错。判断数字大小用 -gt、-lt、-eq 这类运算符,比如 [ $age -gt 18 ] 表示 age 大于 18。判断字符串是否相等用 == ,判断文件是否存在用 -f,判断目录是否存在用 -d,这几个是最常用的。举个实际例子,你写一个脚本,开头先判断某个配置文件是否存在,不存在就提示用户并退出,这样比直接运行报一堆看不懂的错误要友好得多。实际写法大概是这样:if [ ! -f "/etc/myapp.conf" ]; then echo "配置文件不存在,请检查"; exit 1; fi,简单几行就能让脚本健壮很多。

循环是 Shell 脚本里真正能帮你省大量时间的部分。for 循环和 while 循环是最常用的两种。for 循环适合遍历已知的列表,比如你有一批服务器 IP,想对每台都执行同样的命令,写个 for ip in 192.168.1.1 192.168.1.2 192.168.1.3; do ssh $ip "df -h"; done,一行搞定。while 循环适合需要持续监控某个状态的场景,比如每隔5秒检查一次某个进程是否还在运行,不在了就发告警。有一个小技巧是用 for i in $(seq 1 10) 来生成从1到10的数字序列,比手写1到10省事很多,在批量重命名文件或者批量创建测试数据的时候特别好用。

最后说一个容易被忽视的习惯:每个脚本开头写上 #!/bin/bash,明确指定解释器;用 set -e 让脚本在任意命令出错时立即停止,防止错误叠加;重要操作前加上 echo 打印日志,方便排查问题。这几个习惯不是玄学,是真实生产环境里磨出来的经验。Shell 脚本学起来不难,难的是把它写得可靠、可维护,多写多练,遇到问题去 man 手册里找答案,进步会很快的。
回复 转播

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表