前言
想说能点进来的朋友肯定是想学习和练习shell脚本。但学习一个东西,最好是系统性从基础去学,否则会导致地基打不稳,后边遇到问题也会花费大量时间找补。
接下来我根据个人经验以及统合网上的现成的资源在这里为大家梳理一下shell脚本学习的路径与新手容易犯的错误。不管是想做自动化任务,或者准备面试,希望都能对你们有用。
一、Shell 脚本学习路径
1. 基础知识
-
Shell 解释器:了解
#!/bin/bash
(Shebang)的作用,不同 Shell 的区别(Bash/Zsh) -
脚本结构:如何创建可执行脚本(
chmod +x script.sh
) -
变量:定义变量、环境变量、特殊变量(
$0
,$1
,$?
,$$
) -
输入输出:
echo
,read
, 重定向(>
,>>
,2>
) -
条件判断:
if-elif-else
,test
或[ ]
,case
语句 -
循环:
for
,while
,until
-
函数:定义和调用函数,参数传递
-
调试:
set -x
,set -e
的使用
2. 进阶内容
-
字符串处理:
${var#pattern}
,grep
,sed
,awk
-
数组操作:定义数组、遍历、切片
-
文件操作:
find
,xargs
, 文件权限管理 -
信号处理:
trap
命令捕获信号 -
正则表达式:基础正则和扩展正则
-
脚本优化:避免过度使用管道,使用
$( )
替代反引号
3. 高级技巧
-
并行处理:
&
后台运行,wait
等待任务 -
日志记录:
logger
命令和系统日志 -
交互式脚本:
select
菜单,dialog
工具 -
安全实践:避免使用
eval
,处理用户输入
二、练习方法
切忌眼高手底~
1、从简单的开始练习编写
# 练1: 输出当前日期和用户
echo "Today is $(date), user is $USER"
# 练2:计算 1~100 的和
sum=0
for i in {1..100}; do
sum=$((sum + i))
done
echo "Sum: $sum"
2、刷题平台
3、实际项目(备份脚本、日志分析...)
文件备份脚本:自动压缩指定目录并备份到 /backup 下
日志分析工具:统计 Apache/Nginx 日志中的高频 IP
系统监控脚本:检测磁盘使用率超过 80% 时发送邮件告警
自动化部署:通过脚本批量安装软件包或更新配置
三、推荐学习资源
1. 书籍
-
《Shell 脚本学习指南》(经典)
-
《快乐的 Linux 命令行》(免费在线阅读)
2. 在线教程
3. 社区与问答
4. 挑战平台
四、常见错误与调试
-
权限问题:脚本没有执行权限 →
chmod +x script.sh
-
路径错误:使用相对路径导致找不到文件 → 用绝对路径或
cd
切换目录 -
变量赋值错误:等号两侧不能有空格 →
name="value"
(非name = "value"
) -
条件判断空格:
if [ $a -eq 1 ]
方括号内必须保留空格 -
未处理特殊字符:文件名含空格时要用引号包裹 →
"$file"
五、课后作业 (大佬请跳过)
如果能看懂,请在评论区留言,这两个脚本是干什么用的~
(1) for file in *.txt; do mv "$file" "${file%.txt}.md" done
------------------------------------------------------------------------------------
(2) if ! systemctl is-active --quiet nginx; then systemctl restart nginx echo "Nginx restarted at $(date)" >> /var/log/nginx_monitor.log fi
-------------------------------------------------------------------------------------
通过持续练习才是掌握一门技术的关键。
雄关漫道真如铁,
而今迈步从头越。
--忆秦娥·娄山关
祝大家越来越好~