shell中if语句_shell脚本if判断

shell中if语句_shell脚本if判断提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、if语句1.if单分支判断2.if双分支判断3.if多分支判断总结提示:以下是本篇文章正文内容,下面案例可供参考一、if语句1.if单分支判断●当“条件成立”时执行命令序列●否则不执行任合操作语法格式♦if空格条件测试then命令序列fiif加空格加一个条件测试,如果这个条件测试结果为真那么就执行then后面的命令序列,这个命令序列可以是一条命令也可以是多条命令只要条件测试为真,.


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


提示:以下是本篇文章正文内容,下面案例可供参考

一、if语句

1. if单分支判断

● 当“条件成立”时执行命令序列
● 否则不执行任合操作

语法格式
♦ if空格条件测试
then 命令序列
fi
if加空格加一个条件测试,如果这个条件测试结果为真
那么就执行then后面的命令序列,这个命令序列可以是一条命令也可以是多条命令
只要条件测试为真,那么then后面的所有命令都会被执行,直到下一个fi代表if语句结束
如果if语句后面的条件测试失败,那么then后面的所有命令不再被执行

♦ if空格条件测试;then
命令序列
fi
第二种格式

示例1:

#!/bin/bash
read -p "请输入用户名:" user
#-s 是用户写的密码不会在屏幕上显示出来
read -s -p "请输入密码:" pass
#"-z"判断字串是否为空,"! -z"判断字符串是否为非空
if [ ! -z "$user" ];then
  useradd "$user"
fi
if [ ! -z "$pass" ];then
#输出变量$pass,使用管道符|将该密码传递给$user
  echo "$pass" | passwd --stdin "$user"
fi
echo

在这里插入图片描述
示例2:
使用组合命令将两个命令写在一个里面

#!/bin/bash
read -p "请输入用户名:" user
#-s 是用户写的密码不会在屏幕上显示出来
read -s -p "请输入密码:" pass
#"-z"判断字串是否为空,"! -z"判断字符串是否为非空
if [ ! -z "$user" ] && [ ! -z "$pass"];then
  useradd "$user"
#输出变量$pass,使用管道符|将该密码传递给$user
  echo "$pass" | passwd --stdin "$user"
fi
echo

在这里插入图片描述

2. if双分支判断

代码如下(示例):
● 当“条件成立”时执行命令序列1
● 否则,执行命令序列2

语法格式:
♦ if 条件测试
then
命令序列1
else
命令序列2
fi

♦ if 条件测试;then
命令序列1
else
命令序列2
fi

示例1:
测试主机是否能ping通

#!/bin/bash
#当判断$1为空时,($1)就是脚本的第一参数,当用户不给参数的时候,$1是空的时候,那么屏幕就会显
示脚本的用法是错误
if [ -z "$1" ];then
#-n 的意思是不换行,不回车,两个echo分别会用两个颜色显示,但最终会在同一行显示,因为第一个echo没有换行
  echo -n "用法:脚本 "
  echo -e "\033[35m域名或IP"
  exit
fi
#c(设置ping的次数),i(设置ping的间隔描述),-W(设置超越时间)
ping -c2 -i0 -W1 "$1" &>/dev/null
if [ $? -eq 0 ];then
  echo "$1 is up"
else
  echo "$1 is down"
fi

在这里插入图片描述

3. if多分支判断

● 相当于if语句嵌套
● 针对多个条件分别执行不通的操作

语法格式:
♦ if 条件测试1;then
命令序列1
elif 条件测试2;then
命令序列2
……
else
命令序列n
fi

if先写一个条件测试1,先试试第一个条件测试能否满足,如果这个条件可以满足,then那么,就执行then后面的命令,
如果第一个条件不满足,elif则再去判断第二个条件测试是否满足,如果可以满足就执行then后面的命令
以此类推,后面就可以做很多很多次判断,比如说,首先上来判断你性别是否为男,如果是,则执行第一个命令,如果不是,那就再判断第二个条件,你是否为女,如果是女的话,则执行第二个命令,除了男女外可能还有其他情况,就可以继续编写如a情况会如何,如果是b情况会如何
如果前面的条件都没有满足,那么就是执行else后面的命令序列

示例1:
猜数字

#!/bin/bash
b=$[RANDOM%10+1]
read -p "请输入1-10之间的整数:" a
if [ $a -eq $b ]; then
  echo "恭喜,猜对了,就是$num"
elif [ $a -lt $b ]; then
  echo "猜小了"
else
  echo "猜大了"
fi
echo

在这里插入图片描述
示例1的脚本因为每次执行都会变为随机数,所以该脚本并未完善, 后续会进一步完善该脚本

总结

● if的语法格式
需要非常熟悉if的语法格式,在编写任合具体脚本案例之前首先要熟悉掌握if的语法格式if开始fi结尾,当then和if在同一行的时候需要使用“;”分号
当不在同一行的时候可以直接输入
if的单分支它只有一种条件判断,而双分支除了有if之外还要有else,成功了,就用第一个命令,否则就是else后面的那个命令
多分支想对来说复杂一些,它可以多次判断,多次进行if判断,当前面条件都不满足时,就可以做一个else,在前面的条件都不能满足的情况下,就统一认为符合最后一种情况,执行最后一个命令
● 判断用户输入的字串是否为空
判断用户输入的字串是否为空有效防止脚本异常
● 检测主机连通性
通过示例检测主机连通性实际验证了双分支的if语句
● 猜数字
通过猜数字验证多分支的if语句

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170870.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • pycharm2021.2激活码2021年 3月最新注册码「建议收藏」

    pycharm2021.2激活码2021年 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
  • phpstorm2021.12永久激活码【2021最新】

    (phpstorm2021.12永久激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
  • Java-重载与重写的区别[通俗易懂]

    Java-重载与重写的区别[通俗易懂]重写(Override)规则:当子继承父类的方法时,此方法不适用于子的程序执行,需要进行重写。参数列表必须完全与被重写方法相同返回类型必须与被重写方法的返回类型相同子类重写的方法访问权限不能小于被重写的方法。父类的成员方法只能被它的子类重写声明为static和private的方法不能被重写,但是能够被再次声明重写(Override)和重载(Overload)的区别参数列表重写:参数列表必须与被重写的方法相同。重载:参数列表必须不同发生的位置重写:发生在子类中重载:发生在一个类

    2022年7月7日
  • 阿里用什么替代了dubbo_阿里面试必问题:Spring+MyBaits+微服务+Dubbo+Kakfa带解析

    前言很多同学在群里和我抱怨,面试的时候准备的不充分,导致面试结果不理想,也有很多同学苦于没有一份合适的面试指导。针对这些的同学,在这分享总结的Java面试的高频面试题(包括了Java集合,JVM,并发与多线程,Spring,MyBaits,微服务,Dubbo,Kakfa,中间件,Redis,数据库,设计模式等),进行了整理,免费分享给大家,希望大家能带着这些问题和答案解析,能让你进行有针对性行的学…

    2022年4月5日
  • hadoop生态圈的理解「建议收藏」

    hadoop生态圈的理解「建议收藏」 hadoop部分:hadoop生态圈的理解(HDFS,MapReduce,HBASE,zookeeper,hive,sqoop,flume,kafka,yarn,spark) 一、简介       &am

    2022年5月22日
  • 傅里叶级数与傅里叶变换公式推导「建议收藏」

    傅里叶级数与傅里叶变换公式推导「建议收藏」首先,傅里叶分析是指把一个周期或非周期函数展开成一个个三角函数的叠加,如果是对其还没有基本概念的,可以看看傅里叶分析之掐死教程,这篇文章不依赖数学公式却又十分透彻地讲述了傅里叶分析的基本概念,十分值得一读。但如果先深入探讨其中的数学由来,接下来会讲述详细的数学推导。傅里叶级数三角函数系的正交性三角函数系:{1,sinx,cosx,sin2x,cos2x,…,sinnx,cosnx,…},它由无数个sinnx和cosnx组成,其中n=0,1,2,…。正交性:∫−ππsin⁡nxcos⁡mxdx=0,

    2022年7月17日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号