一.case流程控制語句
1.編寫模板
case 變量名4 in
模式匹配1)
命令的集合
;;
模式匹配2)
命令的集合
;;
模式匹配3)
命令的集合
;;
*) *的下一行不需要有;;
echo USAGE[$0 1|2|3]
esac
2.舉例
[root@web scripts]# cat case.sh
#!/bin/sh
case $1 in
Linux)
echo linux......
;;
Shell)
echo Shell......
;;
MySQL)
echo MySQL.....
;;
*)
echo "USAGE $0 [Linux|Shell|MySQL]"
esac
3.case 批量刪除用戶
[root@web scripts]# cat casedel.sh
#!/bin/sh
read -p "請輸入用戶名前綴: " prefix
read -p "請輸入要刪除幾個用戶: " num
for i in `seq $num`
do
echo $prefix$i
done
read -p "你確定要刪除以上用戶嗎?[y|yes|YES|n|N|no]" ready
for n in `seq $num`
do
name=$prefix$n
case $ready in
y|yes|YES)
id $name &>/dev/null
if [ $? -eq 0 ];then
userdel -r $name
[ $? -eq 0 ] && echo "$name del is ok"
else
echo "id: $name: no such user"
fi
;;
n|N|no)
echo "不刪除我玩啥呢?" && exit
;;
*)
echo "USAGE $0 [y|yes|YES|n|N|no]"
esac
done
4.菜單
[root@web scripts]# cat menu.sh
#!/bin/sh
echo -e "\t\t#########################"
echo -e "\t\t#\t1.系統(tǒng)負(fù)載\t#"
echo -e "\t\t#\t2.磁盤使用率\t#"
echo -e "\t\t#\t3.內(nèi)存使用率\t#"
echo -e "\t\t#\t4.當(dāng)前登錄用戶\t#"
echo -e "\t\t#\t5.當(dāng)前eth0的IP\t#"
echo -e "\t\t#\t6.顯示菜單\t#"
echo -e "\t\t#########################"
menu(){
cat<<EOF
1.u 系統(tǒng)負(fù)載
2.d 磁盤使用率
3.f 內(nèi)存使用率
4.w 當(dāng)前登錄用戶
5.ip 當(dāng)前eth0的IP
6.h 顯示幫助(菜單)
7.q 退出
EOF
}
menu
while true
do
read -p "請輸入你想要查看的系統(tǒng)信息的編號: " num
case $num in
1|u)
uptime
;;
2|d)
df -h
;;
3|f)
free -h
;;
4|w)
w
;;
5|ip)
ip add
;;
6|h)
clear
menu
;;
7|q)
exit
;;
*)
menu
esac
done
5.Nginx 啟動腳本
命令
/usr/sbin/nginx 使用命令進(jìn)行啟動后 systemctl 無法管理命令行啟動的Nginx
/usr/sbin/nginx 啟動
/usr/sbin/nginx -s stop 停止
/usr/sbin/nginx -s reload 重新加載\
/usr/sbin/nginx -s stop 重啟
sleep 2
/usr/sbin/nginx
腳本文件
[root@web scripts]# cat nginxstart.sh
#!/bin/sh
. /etc/init.d/functions
en=$1
fun(){
[ $? -eq 0 ] && action "Nginx $en is" /bin/true || action "Nginx $en is" /bin/false
}
case $1 in
start)
/usr/sbin/nginx
fun
;;
stop)
/usr/sbin/nginx -s stop
fun
;;
reload)
/usr/sbin/nginx -s reload
fun
;;
restart)
/usr/sbin/nginx -s stop
sleep 2
/usr/sbin/nginx
fun
;;
status)
echo "當(dāng)前Nginx的PID:`ps axu|grep nginx|grep master|awk '{print $2}'`"
;;
*)
echo "USAGE $0 [start|stop|reload|restart|status]"
esac
6.jumpserver 跳板機(jī)
[root@web scripts]# cat jumpserver.sh
#!/bin/sh
WEB01=10.0.0.7
WEB02=10.0.0.8
MySQL=10.0.0.51
NFS=10.0.0.31
menu(){
cat<<EOF
1. WEB01=10.0.0.7
2. WEB02=10.0.0.8
3. MySQL=10.0.0.51
4. NFS=10.0.0.31
5|h. 顯示菜單
EOF
}
menu
trap "echo 不要亂輸入!小心爆炸!" HUP INT TSTP
while true
do
read -p "請輸入連接服務(wù)器的編號或者是主機(jī)名 :" num
case $num in
1|WEB01)
ssh root@$WEB01 # 免秘鑰登錄
;;
2|WEB02)
ssh root@$WEB02 # 免秘鑰登錄
;;
5|h)
clear
menu
;;
woshiyunwei)
exit
;;
*)
echo "USAGE:[WEB01|1|WEB02|2|h]"
esac
done