学习大数据DAY24 Shell脚本的书写
目录
shell 的变量
系统变量
特殊变量
运算符
if 选择结构 ---then 独立一行
case 语句 等值判断
上机练习 10
# 1. 编写脚本,将系统日志文件(/var/log/messages),拷贝到/root/文件夹中
# cp /var/log/messages /root/
# 2. 编写脚本,通过位置参数传入学生的姓名和班级,打印“我的名字叫 xx,我
的班级是
# xx 班”# sname="ShiHaiHong"
# class="60"
# echo "我的名字叫${sname},我的班级是${class}班"
# 3. 用 if,写一个 shell 脚本,运行时输入一个数字,如果是 666 则输出 evil,
如果是 777 则
# 输出 lucky, 如果是其他则输出 human。
# read -p "输入一个数字:" number
# if [ $number == 666 ]
# then
# echo "evil"
# elif [ $number -eq 777 ]
# then
# echo "lucky"
# else echo "human"
# fi
# 4. 用 case 方法改写上面的功能。
# read -p "输入一个数字:" number
# case $number in
# "666")
# echo "evil"
# ;;
# "777")
# echo "lucky"
# ;;
# *)
# echo "human"
# ;;
# esac
# 5. 判断/root/hosts 是否是存在并且是普通文件,如果不存在则新建一个,如果
已经存
# 在,则追加写入当前时间到此文件中
# if [ -f /root/hosts.txt ]
# then
# date>>/root/hosts.txt
# else
# touch /root/hosts.txt
# fi
# 6. 判断当前用户是否为 root,如果不是则打印非 root 账号,是的话就执行
ifconfig 查看
# 网卡信息($USER 获取当前用户)
# if [ $USER == "root" ]
# then
# ifconfig
# else# echo $USER
# fi
# 7. 编写脚本判断 mysql 是否正常启动(端口号 3306,查看端口 netstat -nltp,然
后 grep 过
# 滤返回行数,判断行数是否大于 0)
# if [ $(netstat -nltp | grep -c "3306") -gt 0 ]
# then
# echo "mysql 已正常启动"
# else
# echo "mysql 还未开启"
# fi
# 8. 位置参数传递一个绝对路径的文件,添加所有人可执行权限且提示添加执行
权限成
# 功,如果没有传递参数提示没有传递文件,如果传递的文件不存在则先创建再
赋权。
# read -p "填写一个文件" dir
# if [ $# -eq 0 ]
# then
#
echo "没有传递文件"
# fi
# if [ -f $dir ]
# then
#
echo "确实有这个文件,正在赋权"
#
chmod a+x $dir
# else
#
echo "文件不存在,自行创建"
#
touch $dir
#
chmod a+x $dir
# fi
# 9. 首先显示当天日期, 然后查找给定的用户是否在系统中工作(cat
/etc/passwd)。
# 如果在系统中,就输出一条欢迎语句(例如 hello,root!);如果不在系统中,
就
# 输出一条语句(waiting for root!)
# date
# read -p "用户名称:" suser
# if [ $(cat /etc/passwd | grep "$suser" | wc -l) -gt 0 ]
# then
# echo "hello,root!"
# else
# echo "waiting for root!"
# fi
# 10. 接受一个参数,若给定参数不是目录, 则给出提示信息;# 否则使用 ls -l 命令列出该目录下的内容,并输出有多少个子目录(d 开头),
多少
# 个普通文件(-开头)。显示示例如下:
# 目录的数量:16
# 文件的数量:25
# read -p "输入参数" dir
# if [ -d $dir ]
# then
# ls -l $dir
# echo "目录的数量:$(ls -l $dir|grep -c "^d")"
# echo "文件的数量:$(ls -l $dir|grep -c "^-")"
# else
# echo "这不是目录"
# fi
附加题
#制作一个猜拳游戏
# read -p "请出拳(石头,剪刀,布):" hand
# if [ $hand == "石头" -o $hand == "剪刀" -o $hand == "布" ]
# then
# echo "玩家:$hand"
# echo -n "电脑:"
#
if [ $RANDOM -ge 0 -a $RANDOM -le 11000 ]
#
then
#
computer="剪刀"
#
elif [ $RANDOM -ge 11001 -a $RANDOM -le 22000 ]
#
then
#
computer="石头"
#
elif [ $RANDOM -ge 22001 -a $RANDOM -le 32767 ]
#
then
#
computer="布"
#
fi
#
echo $computer
#
if [ $computer == $hand ]
#
then
#
echo "平局"
#
elif [ $computer == "剪刀" -a $hand == "布" -o $computer == "石头" -a $hand
== "剪刀" -o $computer == "布" -a $hand == "石头" ]
#
then
#
echo "电脑赢"
#
elif [ $computer == "布" -a $hand == "剪刀" -o $computer == "剪刀" -a $hand
== "石头" -o $computer == "石头" -a $hand == "布" ]
#
then
#
echo "玩家赢"#
fi
# else
#
echo "不要作弊"
# fi
for 循环
while 循环
乘法表(双层嵌套)
上机练习 11
# 1.鸡兔同笼(同前面 PLSQL 的题目,DAY13)
# for chicken in `seq 0 35`
# do
#
rabbit=$((35 - $chicken))
#
if [ $(($rabbit*4 + $chicken*2)) -eq 94 ]
#
then
#
echo "共有${chicken}只鸡,${rabbit}只兔"
#
fi
# done
# 2.猴子吃桃(同前面 PLSQL 的题目,DAY13)
# pea=1
# for day in `seq 1 10`
# do
#
pea=$((2 * ($pea+1)))
# done
# echo "有${pea}个桃子"
# 3.创建用户组 wanmei,批量建立用户 wm1 到 wm9,用户属于 wanmei 组,创建完
成查
# 看/etc/group 和 /etc/passwd 文件
##groupadd wanmei
# for i in `seq 1 9`
# do
#
useradd -g wanmei "wm$i"
# done#终端查看
#cat /etc/group
#cat /etc/passwd
# 4.删除上面的用户和用户组
# for i in `seq 1 9`
# do
#
userdel "wm$i"
# done
# groupdel wanmei
# 5.实现传入一个目录作为参数,如果传入的不是目录则提示不是目录,如果是
目录则将
# 该目录下所有的普通文件的文件名都罗列出来
# if [ -d $1 ]
# then
# ls -l $1 | grep "^-"
# else
# echo "不是目录"
# fi
# 方法二
# if [ -d $1 ]
# then
#
for i in `ls $1`
#
do
#
if [ -f "$1/$i" ]
#
then
#
echo $i
#
fi
#
done
# else
# echo "不是目录"
# fi
# 6.猜数字游戏:电脑随机产生一个 100 以内的数字(1-99),通过每次键盘输
入来猜数
# 字,输入的小了就提示往大猜,输入大了就提示往小里猜, 直到输入正确数
字(通过
# $RANDOM 获取随机数)
# ComputerNumber=$(($RANDOM % 99 + 1))
# read -p "猜猜看呐" no
# if [ $no -ge 1 -a $no -le 99 ]
# then
#
while [ $no != $ComputerNumber ]
#
do
#
if [ $no -lt $ComputerNumber ]#
then
#
read -p "猜小了,再试一遍吧" no
#
elif [ $no -gt $ComputerNumber ]
#
then
#
read -p "猜大了,再试一遍吧" no
#
elif [ $no -gt 99 -o $no -lt 1 ]
#
then
#
read -p "数字不在范围内啊!" no
#
fi
#
done
#
echo "你终于答对了,恭喜!"
# else
#
echo "不是数字或数字过大!"
# fi
# 7.查看 100 到 200 以内素数并统计素数的个数
# count=0
# for i in `seq 100 200`
# do
#
flag=true
#
for j in `seq 2 $(($i-1))`
#
do
#
if [ $(($i%$j)) -eq 0 ]
#
then
#
flag=false
#
break
#
fi
#
done
#
if [ $flag == true ]
#
then
#
echo $i
#
count=$(($count+1))
#
fi
# done
# echo "有${count}个素数"
把附加题代码修改为循环形式
# read -p "来玩猜拳吗?(y/n)" wan
# while [ $wan == 'y' ]
# do
# read -p "请出拳(石头,剪刀,布,我不玩了):" hand
# if [ $hand == "我不玩了" ]
# then
#
break
# elif [ $hand == "石头" -o $hand == "剪刀" -o $hand == "布" ]# then
# echo "玩家:$hand"
# echo -n "电脑:"
#
if [ $RANDOM -ge 0 -a $RANDOM -le 11000 ]
#
then
#
computer="剪刀"
#
elif [ $RANDOM -ge 11001 -a $RANDOM -le 22000 ]
#
then
#
computer="石头"
#
elif [ $RANDOM -ge 22001 -a $RANDOM -le 32767 ]
#
then
#
computer="布"
#
fi
#
echo $computer
#
if [ $computer == $hand ]
#
then
#
echo "平局"
#
elif [ $computer == "剪刀" -a $hand == "布" -o $computer == "石头" -a $hand
== "剪刀" -o $computer == "布" -a $hand == "石头" ]
#
then
#
echo "电脑赢"
#
elif [ $computer == "布" -a $hand == "剪刀" -o $computer == "剪刀" -a $hand
== "石头" -o $computer == "石头" -a $hand == "布" ]
#
then
#
echo "玩家赢"
#
fi
# else
#
echo "不要作弊"
# fi
# done
# echo "下次再会~"
需要使用代码请自行消去注释。(ctrl+/)
原文地址:https://blog.csdn.net/shh2000424/article/details/140699548
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!