1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 21.shell语言之if条件判断语句

21.shell语言之if条件判断语句

时间:2021-03-21 12:46:29

相关推荐

21.shell语言之if条件判断语句

📋 个人简介

💖 作者简介:大家好,我是小鹏linux,运维领域新星创作者。😜📝 个人主页:小鹏linux🔥🎉 支持我:点赞👍+收藏⭐️+留言📝💬格言:你未必出类拔萃,但一定与众不同!🔥

📕系列专栏:

🍎阶段一:windows基础 原创16篇

🍎阶段二:Linux基础知识 原创38篇

🍎阶段三:shell基础+shell高级 原创21篇

🍎阶段四:python基础及自动化应用 原创未开始

🍎阶段五:Linux网络服务 原创未开始

🍎阶段六:集群原理及架构原创未开始

🍎阶段七:云计算虚拟化技术 原创未开始

目录

1.单分支if条件语句

1.1举例:判断目录是否存在,不存在则创建

2.双分支if条件语句

2.1举例:监听并自动重启apache服务脚本

3.多分支if条件语句

3.1举例:判断用户输入的是文件还是目录

4.case条件语句

4.1举例:创建启动脚本,让service命令管理apache

4.2举例:创建启动脚本,让service命令管理nginx

1.单分支if条件语句

then后面跟符合条件之后执行的程序,可以放在[]之后,用;分隔。也可以换行写入,

就不需要“;”了。

比如:

if [ 条件判断式 ] then程序 fi

1.1举例:判断目录是否存在,不存在则创建

#!/bin/bash#date:-4-13#描述:if单分支语句示例,判断目录是否存在read -p "请输入需要判断的目录:" nameif [ ! -d $name ]thenecho "$name目录不存在,正在创建..."mkdir -p $nameecho "$name目录创建完成."fiecho "$name目录已存在,正在退出..."

2.双分支if条件语句

if [ 条件判断式 ] then条件成立时,执行的程序。 else条件不成立时,执行的另一个程序。 fi

2.1举例:监听并自动重启apache服务脚本

在日常工作中,服务器上的服务经常会宕机。如果我们对服务器监控不好,就会造成服务器中服务宕机了,而管理员却不 知道的情况。这是我们可以写一个脚本来监听本机的服务。如果服务停止或宕机了,可以自动重启这些服务。用apache举例:

首先介绍端口扫描命令

nmap端口扫描命令,

格式:nmap -sT 域名或IP

子选项:

-s 扫描

-T 扫描所有开启的TCP端口

nmap扫描后显示的端口一定是存活的。

脚本要使用nmap命令,首先用yum -y install nmap安装。

apache服务也是yum安装。

[root@xiaopeng ~]# cat autostart.sh #!/bin/bash port=$(nmap -sT 192.168.22.222 | grep tcp | grep http | awk '{print $2}') if [ "$port" == "open" ] then echo "$(date) httpd is ok!" >> /tmp/autostart-acc.log else /etc/rc.d/init.d/httpd start &> /dev/nullecho "$(date) restart httpd!!" >> /tmp/autostart-err.log fi

(首先用nmap命令查看是否开启apache并赋值给port。

然后进行条件判断。如果服务开启,输出当前时间+httpd is ok 到/tmp/autostart-

acc.log。

如果变量port的值不是open,那么执行else下操作。首先启动apache服务,将启动后 信息输出至位桶,然后在/tmp/autostart-err.log中记录。在本次脚本中nmap命令使用的是

IP查找端口,但并未指DNS,所以会报DNS不存在的错,但不影响结果。)

3.多分支if条件语句

if [ 条件判断式1 ] then当条件判断式1成立时,执行程序1。 elif [ 条件判断式2 ] then当条件判断式2成立时,执行程序2。 ......(可加入更多条件) else当所有条件不成立时,最后执行此程序。 fi

3.1举例:判断用户输入的是文件还是目录

#!/bin/bash#date:-4-13#描述:判断文件类型read -p "请输入一个文件:" fileif [ -z $file ]thenecho"错误!输入的文件为空."elif [ ! -e $file ]thenecho"错误!输入的文件不存在."elif [ -f $file ]thenecho"$file是一个普通文件"elif [ -d $file ]thenecho"$file是一个目录"elseecho"$file是其他类型文件"fi

4.case条件语句

多分支case条件语句

case $变量名 in “值1”) 如果$变量等于值1,则执行程序1 ;; “值2”) 如果$变量等于值2,则执行程序2 ;; ....省略... *) 如果$变量的值不是以上值,则执行此程序 ;; esac

4.1举例:创建启动脚本,让service命令管理apache

[root@xiaopeng htdocs]# vim /etc/init.d/apached#!/bin/bash# chkconfig: 2345 64 36 # description: A very fast and reliable SQL database enginehttpd=/usr/local/apache2/bin/apachectlcase $1 instart)$httpd start;;stop)$httpd stop;;restart)$0 stop sleep 0.05 $0 start;;configtest) $httpd -t;;*)echo "usage:$0 start|stop|restart|configtest.";;esac

4.2举例:创建启动脚本,让service命令管理nginx

[root@xiaopeng conf]# vim /etc/init.d/nginx#!/bin/bash#Author:liu#chkconfig: 2345 99 33#description: nginx server control toolsngxc="/usr/local/nginx/sbin/nginx"ngxc_fpm="/usr/local/php/sbin/php-fpm"case "$1" instart)$ngxc -t &> /dev/nullif [ $? -eq 0 ];then$ngxc$ngxc_fpmecho "nginx service start success!"else$ngxc -tfi;;stop)$ngxc -s stopkillall php-fpmecho "nginx service stop success!";;restart)$0 stop$0 start;;reload)$ngxc -t &> /dev/nullif [ $? -eq 0 ];then$ngxc -s reloadpkill -HUP php-fpmecho "reload nginx config success!"else$ngxc -tfi;;*)echo "please input stop|start|restart|reload."exit 1esac

喜欢的请来个三连支持一下吧,谢谢谢谢!!!

您的支持是我最大的动力!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。