实验一
检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
[root@localhost ~]# vim demo.sh
#!/bin/bash
if [ -f ~/test.sh ]
then
echo "文件存在"
if [ -x ~/test.sh ]
then
echo "文件有可执行权限"
else
echo "文件没有可执行权限"
fi
else
echo "文件不存在"
fi
[root@localhost ~]# ./demo.sh
文件存在
文件有可执行权限
[root@localhost ~]# ll ~/test.sh
-rwxr-xr-x. 1 root root 0 8月 24 15:05 /root/test.sh
实验二
提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
[root@localhost ~]# vim demo1.sh
#!/bin/bash
#百米成绩
read -p "请输入100米赛跑的秒数:" time
if [ $time -gt 0 ] && [ $time -le 10 ]
then
echo "进入选拔赛"
#判断男女性别
read -p "请输入性别(b(男)/g(女)):" sex
if [ $sex = b ]
then
echo "进入男生组"
elif [ $sex = g ]
then
echo "进入女生组"
else
echo "错误"
fi
elif [ $time -gt 10 ]
then
echo "淘汰"
else
echo "请重新输入"
fi
[root@localhost ~]# ./demo1.sh
请输入100米赛跑的秒数:0
请重新输入
[root@localhost ~]# ./demo1.sh
请输入100米赛跑的秒数:5
进入选拔赛
请输入性别(b(男)/g(女)):b
进入男生组
[root@localhost ~]# ./demo1.sh
请输入100米赛跑的秒数:10
进入选拔赛
请输入性别(b(男)/g(女)):g
进入女生组
[root@localhost ~]# ./demo1.sh
请输入100米赛跑的秒数:11
淘汰
实验三
用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
[root@localhost ~]# vim demo3.sh
#!/bin/bash
case $1 in
*.tar.gz)
if [ -f $1 ]
then
tar -zxvf $1 -C /opt &> /dev/null
echo "已解压"
else
echo "$1不是可解压文件"
fi
;;
*.tar.bz2)
if [ -f $1 ]
then
tar -jxvf $1 -C /opt &> /dev/null
echo "已解压"
else
echo "$1不是可解压文件"
fi
;;
*)
echo "输入错误"
esac
[root@localhost ~]# vim demo3.sh
[root@localhost ~]# ./demo3.sh
输入错误
[root@localhost ~]# ./demo3.sh 111.tar.gz
111.tar.gz不是可解压文件
实验四
提示用户输入内容,使用if 语句判断输入的内容是否为整数。再判断输入的内容是奇数还是偶数。
[root@localhost ~]# vim demo4.sh
#!/bin/bash
read -p "请输入一个数" a
if [ $a = 0 ]
then
echo "该数为整数"
else
let i=a+0
if [ $? = 0 ]
then
echo "该数为整数"
let b=i%2
if [ $b = 0 ]
then
echo "该数是偶数"
else
echo "该数是奇数"
fi
else
echo "该数不是整数"
fi
fi
[root@localhost ~]# ./demo4.sh
请输入一个数0
该数为整数
[root@localhost ~]# ./demo4.sh
请输入一个数5
该数为整数
该数是奇数
[root@localhost ~]# ./demo4.sh
请输入一个数4
该数为整数
该数是偶数
实验五
用if 语句判断主机是否存活
[root@localhost ~]# vim demo2.sh
#!/bin/bash
#判断主机是否存活
ping -m 1 -c 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "主机存活"
else
echo "主机阵亡"
fi
[root@localhost ~]# ./demo2.sh
主机阵亡
[root@localhost ~]# ./demo2.sh 192.168.1.10
主机存活
实验六
用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中(#chkconfig: 2345 99 20)使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务,要求如果命令选项不对,则提示 “用法:$0{start|stop|status|restart}”。
[root@localhost ~]# vim demo5.sh
#!/bin/bash
read -p "管理防火墙{start|stop|restart|status}" firewalld
case $firewalld in
start)
systemctl start firewalld
echo "防火墙已开启"
;;
stop)
systemctl stop firewalld
echo "防火墙已关闭"
;;
restart)
systemctl restart firewalld
echo "防火墙已重启"
;;
status)
systemctl status firewalld
echo "查看状态"
;;
*)
echo "用法$0{start|stop|restart|status}"
esac
[root@localhost ~]# bash demo5.sh
管理防火墙{start|stop|restart|status}start
防火墙已开启
[root@localhost ~]# bash demo5.sh
管理防火墙{start|stop|restart|status}stop
防火墙已关闭
[root@localhost ~]# bash demo5.sh
管理防火墙{start|stop|restart|status}restart
防火墙已重启
[root@localhost ~]# bash demo5.sh
管理防火墙{start|stop|restart|status}status
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2022-08-29 17:01:39 CST; 6s ago
Docs: man:firewalld(1)
Main PID: 8685 (firewalld)
CGroup: /system.slice/firewalld.service
└─8685 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
8月 29 17:01:40 localhost.localdomain firewalld[8685]: WARNING: COMMAND_FAILED: '/...
Hint: Some lines were ellipsized, use -l to show in full.
查看状态
[root@localhost ~]# bash demo5.sh
管理防火墙{start|stop|restart|status}st
用法demo5.sh{start|stop|restart|status}