if语句&case

目录

一. if 语句

1. if 语句类型

单分支语句:

双分支语句:

多分支语句

2. 实验小例子

① 检测服务是否开启脚本,以httpd为例

​编辑

保存脚本文件:sz 脚本名

② 查询分数脚本

③ 新建用户脚本

二. case

1. case概述

2. 实验小例子

① 系统工具箱脚本

模板

​编辑

② yes&no脚本(不分yes大小写,全拼还是简写,都能识别)

三. echo

不换行输出:echo  -n

输出转义符:echo  -e


一. if 语句

1. if 语句类型

单分支语句:

语法:if [  5  gt  4 ]

          then

          命令序列

           fi             ——表结束语(if 反过来)

双分支语句:

语法:if 判断条件1

           then   ——符合判断条件的代码

           命令语句

           else   —— 不符合判断条件的代码

           命令语句

           fi       ——表结束语

多分支语句

语法:if 判断条件1

          then   ——符合判断条件的话

          命令序列

          elif     ——判断条件2

          then

          命令序列

          else      —— 不符合判断条件的话

          命令语句

          fi         ——表结束语

2. 实验小例子

① 检测服务是否开启脚本,以httpd为例
vim  httpd.sh

#!/bin/bash
ss -natp|grep 80      #检测80端口连接状态(httpd端口是80)

if [ $? -eq 0 ]         #如果上一条命令正确,连接没问题
then                    #那么就
echo "httpd 服务已开启"  #提示httpd服务已开启
else                    #如果不正确,连接有问题
systemctl start httpd &>/dev/null     #启动httpd,多余信息放入垃圾站
           if [ $? -eq 0 ]   #继续检测上一条命令,是否正常启动
           then
           echo "httpd 服务已开启"
           else
           echo "httpd 服务启动失败"
           fi
fi      #if开头,fi结尾,上一条fi对应的是第二个if,这个fi对应的开头的if
            

检测脚本能否运行

if语句&case_第1张图片
保存脚本文件:sz 脚本名
② 查询分数脚本
vim  score.sh

read -p "请输入你的分数(正整数):" num   #交互

if [ $num -ge 90 -a $num -le 100 ]
# -a(and)表示且,-o(or)表示或,分数大于等于90,小于等于100
then
echo "优秀"
elif [ $num -ge 80 -a $num -lt 90 ]
#否则如果分数大于等于80,小于90,括号两边要空格
then
echo "良好"
elif [ $num -ge 70 -a $num -lt 80 ]
then
echo "中等"
elif [ $num -ge 60 -a $num -lt 70 ]
then
echo "不太好"
elif [ $num -lt 60 ]
then
echo "有待提高"
else                #以上结果都不是
echo "请输入0-100以内的正整数:"
bash $0        (再输一次,$0是当前脚本的文件名)
fi

if语句&case_第2张图片

③ 新建用户脚本
#!/bin/bash
read -p "请输入你要新建的用户名:" name

grep -q $name /etc/passwd    #grep -q:结果不显示
if [ $? -eq 0 ]
then
echo "该用户已存在"
exit
else
useradd $name
pass=`cat /dev/random |tr -dc [[:alnum]] | head -c12`  
#自动生成密码
echo $pass |passwd $name --stdin         
#把自动生成的密码作为新建用户的密码
echo $name  $pass >> /opt/pass.txt       
#把新建用户名以及对应的密码放入pass.txt文件中保存
fi

if语句&case_第3张图片

if语句&case_第4张图片

二. case

1. case概述

case也是个条件判断

case支持glob风格的通配符:

通配符 含义
* 任意长度任意字符
任意单个字符
[0-9] 指定范围内的任意单个字符
| 或者,如:a | b ,a或b

2. 实验小例子

① 系统工具箱脚本
#!/bin/bash
cat <
模板
if语句&case_第5张图片
② yes&no脚本(不分yes大小写,全拼还是简写,都能识别)

第一种写法:

#!/bin/bash
read -p "请输入yes 或 no:" key

case $key in
[yY][eE][sS] | [yY])      #无论是大小的yes或是单写的y
echo  "你输入的是yes"
;;

[nN][oO] | [nN])

echo "你输入的是no"
;;

*)
echo "输入有误请重新输入"
bash $0
;;
esac 

第二种写法:

#!/bin/bash
read -p "请输入yes或no:" key

key=`echo $key | tr 'A-Z' 'a-z'`   #所有输入的大写字符转换成小写

case $key in
yes|y)
echo "你输入的是yes"
;;

no|n)
echo "你输入的是no"
;;

*)
echo "输入有误请重新输入"
bash $0
;;
esac

if语句&case_第6张图片

三. echo

不换行输出:echo  -n
输出转义符:echo  -e

你可能感兴趣的:(linux)