Linux Shell脚本实战:从基础到应用案例解析

需积分: 10 3 下载量 156 浏览量 更新于2024-07-15 收藏 180KB DOCX 举报
"shell100.docx 是一份关于Shell脚本编程的文档,包含了100个实际应用案例,涵盖了基础操作到更复杂的任务,例如创建用户、系统备份、环境部署、监控、用户权限检查以及游戏编程等。文档旨在帮助读者提升在Linux环境中使用Shell脚本解决问题的能力。" 以下是对部分案例的详细解释: 1. **编写 HelloWorld 脚本**:这是入门级的脚本,通常用于验证Shell环境是否正常。它一般只包含一行代码 `echo "Hello, World!"`,用于在终端打印出欢迎信息。 2. **通过位置变量创建Linux系统账户及密码**:利用Shell脚本,可以通过读取命令行参数或位置变量来动态创建用户。例如,`useradd $1` 和 `passwd $1` 可以分别用来创建用户和设置密码,其中 `$1` 表示第一个命令行参数。 3. **每周五备份日志文件**:可以使用`crontab`服务结合`tar`命令实现。例如,`0 0 * * 5 tar -czvf /backup/logs_$(date +\%Y\%m\%d).tar.gz /var/log/*`会在每周五0点0分执行,打包并压缩 `/var/log` 下的所有日志文件,并按照日期命名备份文件。 4. **一键部署LNMP**:LNMP代表Linux, Nginx, MySQL, PHP,这是一个常见的Web服务器环境。使用RPM包安装,脚本可能包含 `yum install nginx mysql-server php` 等命令,简化部署流程。 5. **实时监控系统资源**:可以结合`free`和`df`命令检查内存和磁盘使用情况,使用`mail`发送报警邮件。例如,`while true; do if [[ $(free | grep Mem | awk '{print $4/$2 * 100.0}') -gt 50 ]]; then mail -s "Memory Alert" root@example.com; fi; sleep 60; done` 检测内存使用率,当超过50%时发送邮件。 6. **猜数字游戏**:用户与脚本交互猜随机数,可以用`rand`函数生成随机数,`read`命令获取用户输入,用条件语句判断并反馈结果,直到猜对为止。 7. **使用子串对比判断管理员权限**:通过`id -un`获取当前用户名,与`root`比较判断是否为管理员。如果是,执行`yum install vsftpd`,否则显示错误信息。 8. **使用UID判断管理员权限**:`id -u`会返回当前用户的UID,若为0则表示是超级用户。类似上一个案例,根据结果执行相应的命令。 9. **创建用户并配置密码**:`read`命令获取用户输入的用户名和密码,使用`useradd`和`passwd`命令创建并设置密码。如果用户未输入用户名,脚本会给出错误提示并退出。 10. **数字排序**:脚本接收三个整数输入,使用`read`命令读取,然后通过比较和交换操作(如`if`语句和临时变量`tmp`)对数字进行排序。 11. **石头剪刀布游戏**:这是一个简单的交互式游戏,用户与计算机随机选择石头、剪刀或布。可以使用`$RANDOM`生成随机数,并根据选择结果(0-2分别对应石头、剪刀、布)判断胜负。 这些案例覆盖了Shell脚本的基础语法、控制结构、文件操作、系统调用等多个方面,是学习和实践Shell脚本的好材料。