shell中if语句_shell脚本if判断

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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 "3[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语句

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 【vizard】用python写3D游戏

    【vizard】用python写3D游戏vizard介绍Vizard是一款虚拟现实开发平台软件,从开发至今已走过十个年头。它基于C/C++,运用新近OpenGL拓展模块开发出的高性能图形引擎。当运用Python语言执行开发时,Vizard同时自动将编写的程式转换为字节码抽象层(LAXMI),进而运行渲染核心。vizard入门加载人物、对象、背景avatar=viz.addAvatar(‘xxx.cfg’,pos=(0,0,0),euler=(0,0,0))viz.add(‘xxx.osgb’,pos=(0,0,0),e

  • VMware虚拟机怎么卸载_虚拟机系统进入安全模式

    VMware虚拟机怎么卸载_虚拟机系统进入安全模式vmware是一款主流的虚拟机软件,很多小伙伴都会在电脑上安装这款虚拟机软件,方便用户在里面模拟出多台虚拟机。如果不想用了要如何卸载呢?下面就来看看详细的卸载教程。在应用管理界面软件列表中找到VMware,点击【卸载】按钮即可。在桌面左下角win图标上右键鼠标点击【设置】按钮。在打开的Windows设置面板中点击【应用】选项。…

  • navcat 202115 激活码-激活码分享

    (navcat 202115 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~ML…

  • 超强物联网架构解读图_物联网的体系架构是什么

    超强物联网架构解读图_物联网的体系架构是什么oT科技物语的小伙伴们,我是ICE青,特别喜欢金庸大师作品的ICE青。因此,本期开始我将为大家介绍《物联网平台之独孤九剑》,看万物互联的世界何以笑傲江湖——「总决式」:物联网概述和架构「破剑式」:OceanConnect物联网平台概述「破刀式」:OceanConnect物联网特性概述「破枪式」:业务流程「破鞭式」:北向API「破索式」:南向Profile「破掌式」:…

  • java链表排序方法_java链表排序

    java链表排序方法_java链表排序插入排序    对链表进行插入排序,是最简单的一种链表排序算法,用于插入排序是迭代的,所以每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。    每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。    插入排序的时间复杂度为O(N^2),空间复杂度为O(1)cla

  • Sql Prompt使用技巧[通俗易懂]

    Sql Prompt使用技巧[通俗易懂]1、刷新缓存打开SqlServer,该插件会自动运行,将数据库中的视图、表、存储过程都缓存起来,所以在第一次打开查询分析器的时候,插件会有一个加载缓存的过程。如果数据库中的对象有变化,需要手动刷新一下缓存,可以按Ctrl+Shift+D,或者在主菜单中找到SQLPrompt→RefreshSuggestions。2、智能提示(1)在查询分析器中写DML语句时,当鼠标移动到…

发表回复

您的电子邮箱地址不会被公开。

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