没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论






Shell 脚本 100 例
融汇 Shell 脚本知识点,集大成之作。
本书实在是学习、提升、面试必备精品!

2/38
1. 编写 helloworld 脚本
#!/bin/bash
echo"helloworld"
2. 通过位置变量创建 Linux 系统账户及密码
#!/bin/bash
#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数
echo"$2"|passwd‐‐stdin"$1"
3. 每周 5 使用 tar 命令备份/var/log 下的所有日志文件
#vim/root/logbak.sh
#编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖
#注意 date 命令需要使用反引号括起来,反引号在键盘<tab>键上面
tar-czflog-`date+%Y%m%d`.tar.gz/var/log
#crontab‐e#编写计划任务,执行备份脚本
0003**5/root/logbak.sh
4. 一键部署 LNMP(RPM 包版本)
#!/bin/bash
#使用 yum 安装部署 LNMP,需要提前配置好 yum 源,否则该脚本会失败
#本脚本使用于 centos7.2 或 RHEL7.2
yum‐yinstallhttpd
yum‐yinstallmariadbmariadb‐develmariadb‐server
yum‐yinstallphpphp‐mysql
systemctlstarthttpdmariadb
systemctlenablehttpdmariadb
5. 实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M
时,发送报警邮件给 root 管理员
disk_size=$(df/|awk'/\//{print$4}')
#!/bin/bash
#提取根分区剩余空间
useradd"$1"

3/38
#提取内存剩余空间
mem_size=$(free|awk'/Mem/{print$4}')
while:
do
#注意内存和磁盘提取的空间大小都是以 Kb 为单位
if[$disk_size‐le512000‐a$mem_size‐le1024000];then
mail‐sWarningroot<<EOF
Insufficientresources,资源不足
EOF
fi
done
6. 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
猜小了或猜大了,直至用户猜对脚本结束。
#RANDOM 为系统自带的系统变量,值为 0‐32767 的随机数
#使用取余算法将随机数变为 1‐100 的随机数
num=$[RANDOM%100+1]
#使用 read 提示用户猜数字
#使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小
于等于)
while:
do
read‐p"计算机生成了一个 1‐100 的随机数,你猜:"cai
if[$cai‐eq$num];then
echo"恭喜,猜对了"
exit
elif[$cai‐gt$num];then
echo"Oops,猜大了"
else
echo"Oops,猜小了"
fi
done
7. 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不
是,则提示您非管理员(使用字串对比版本)
#!/bin/bash
if[$USER=="root"];then
yum‐yinstallvsftpd
else
echo"您不是管理员,没有权限安装软件"
fi
8. 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不
是,则提示您非管理员(使用 UID 数字对比版本)
#!/bin/bash

4/38
#!/bin/bash
if[$UID‐eq0];then
yum‐yinstallvsftpd
else
echo"您不是管理员,没有权限安装软件"
fi
9. 编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户
不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默
认的 123456 作为默认密码。
#!/bin/bash
read‐p"请输入用户名:"user
#使用‐z 可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本,退出码为 2
#没有输入用户名脚本退出后,使用$?查看的返回码为 2
if[‐z$user];then
echo"您不需输入账户名"
exit2
fi
#使用 stty‐echo 关闭 shell 的回显功能
#使用 sttyecho 打开 shell 的回显功能
stty‐echo
read‐p"请输入密码:"pass
sttyecho
pass=${pass:‐123456}
useradd"$user"
echo"$pass"|passwd‐‐stdin"$user"
10. 依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字
#!/bin/bash
read‐p"请输入一个整数:"num1
read‐p"请输入一个整数:"num2
read‐p"请输入一个整数:"num3
#不管谁大谁小,最后都打印 echo"$num1,$num2,$num3"
#num1 中永远存最小的值,num2 中永远存中间值,num3 永远存最大值
#如果输入的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对调
tmp=0
#如果 num1 大于 num2,就把 num1 和和 num2 的值对调,确保 num1 变量中存的是最小值
if[$num1‐gt$num2];then
tmp=$num1
num1=$num2
num2=$tmp
fi
#如果 num1 大于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最小值
if[$num1‐gt$num3];then
tmp=$num1
num1=$num3
num3=$tmp
fi
#如果 num2 大于 num3,就把 num2 和 num3 对标,确保 num2 变量中存的是小一点的值

5/38
if[$num2‐gt$num3];then
tmp=$num2
num2=$num3
num3=$tmp
fi
echo"排序后数据为:$num1,$num2,$num3"
11. 编写脚本,实现人机<石头,剪刀,布>游戏
game=(石头剪刀布)
num=$[RANDOM%3]
computer=${game[$num]}
#通过随机数获取计算机的出拳
#出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能
echo"请根据下列提示选择您的出拳手势"
echo"1.石头"
echo"2.剪刀"
echo"3.布"
read‐p"请选择 1‐3:"person
case$personin
1)
if[$num‐eq0];then
echo"平局"
elif[$num‐eq1];then
echo"你赢"
else
echo"计算机赢"
fi;;
2)
if[$num‐eq0];then
echo"计算机赢"
elif[$num‐eq1];then
echo"平局"
else
echo"你赢"
fi;;
3)
if[$num‐eq0];then
echo"你赢"
elif[$num‐eq1];then
echo"计算机赢"
else
echo"平局"
fi;;
*)
echo"必须输入 1‐3 的数字"
esac
#!/bin/bash
剩余37页未读,继续阅读
资源评论

渣渣馬
- 粉丝: 142
- 资源: 14

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
