个人技术分享

1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限

test -e /opt/test.sh
if [[ $? -eq 0 ]]
then
 test -x /opt/test.sh
if [[ $? -eq 0 ]]
 then
 echo  "文件存在,且有执行权限"
else
 echo " 文件存在,没有执行权限"
 fi
else
 echo "文件不存在" 
fi
~                                                                                             
验证
[root@test2 opt]# touch test.sh
[root@test2 opt]# sh one.sh 
 文件存在,没有执行权限

2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,
大于10秒的都淘汰,
如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别。
男生进男生组,女生进女生组,如果输入错误请提示错误(整数判断,小数判断。9.72 3.21 )

read -p "请输入100米时间" a
if [[ $a -eq $a ]] &> /dev/null
then
 echo "整数"
#else 
# echo " 重新输入成绩"
#fi
if [[ a -gt 0 && a -lt 10 ]] &> /dev/null
then
  echo "进入选拔赛"

read -p " 请输入性别man/woman  " b
  if  [[ $b == man ]]
  then
  echo "进入男生组"
  else  [[ $b == woman ]]
  echo "进入女生组"
  fi
else
 echo "被淘汰"
fi
else
echo "重新输入成绩"
fi
验证:
[root@test2 opt]# sh two.sh 
请输入100米时间9
整数
进入选拔赛
 请输入性别man/woman  man
进入男生组

3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
tar -zxvf tar -jxvf

read -p "需要解压的压缩包名称 " a
case $a in
*.tar.gz)
tar -zxvf $a -C /opt
;;
*.tar.bz2)
tar -jxvf $a -C /opt
;;
esac
验证
[root@test2 opt]# sh three.sh 
需要解压的压缩包名称 nginx-1.22.0.tar.gz
nginx-1.22.0/
nginx-1.22.0/auto/
nginx-1.22.0/conf/
nginx-1.22.0/contrib/

4.提示用户输入内容,使用if 语句判断输入的内容是否为整数。判断范围0-100。
5.根据上一题再判断输入的内容是奇数还是偶数。

read -p "请输入一个整数" a

if [[ $a -eq $a ]] &> /dev/null
then
 echo "整数,没毛病"

if [[ $a -gt 0 && $a -le 100 ]]
then
 echo "在范围内" 

if [[ $a%2 -eq 0 ]]
 then
  echo "偶数"
else
 echo "奇数"
fi

else
 echo "再见"
fi

else
 echo "重新输入"
fi
验证:
[root@test2 opt]# sh fourandfive.sh 
请输入一个整数22
整数,没毛病
在范围内
偶数

6.用if 语句判断主机是否存活.保存到/opt/hosts.txt
ping -c 5 -q 不显示ping的过程

ping -c 5 -q $1
if [[ $? -eq  0 ]]上
then
echo "连通性没毛病"
echo $1 >> /opt/hosts.txt
else
 echo "不在线"
fi
验证:
[root@test2 opt]# sh six.sh 192.168.11.2
PING 192.168.11.2 (192.168.11.2) 56(84) bytes of data.

--- 192.168.11.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.099/0.136/0.187/0.036 ms
连通性没毛病

[root@test2 opt]# cat hosts.txt 
192.168.11.137
192.168.11.2

7.用case语句控制 firewalld start|stop|restart|status 来管理firewalld服务,
要求如果命令选项不对,则提示输入不正确: {start|stop|status|restart}”。
stop start status restart

case $a in
start)
systemctl start firewalld
 echo "$a,开启防火墙"
;;
stop)
systemctl stop firewalld
 echo "$a,关闭防火墙"
;;
restart)
systemctl restart firewalld
 echo "$a,重启防火墙"
;;
status)
systemctl status firewalld
 echo "$a,查看防火墙状态"
;;
*)
 echo "输入不正确"
esac
验证:
[root@test2 opt]# sudo systemctl is-active firewalld 
inactive
[root@test2 opt]# sh seven.sh 
输入防火墙管理命令 start
start,开启防火墙
[root@test2 opt]# sudo systemctl is-active firewalld 
active