1、测试:检测表达式是否成立,成立则返回值为0,否则为非0

方法:

1)test  表达式

2)【 表达式 】

2、文件测试:

-d:是否为目录

-f:是否为文件

-e:是否存在

-r:是否有读取权限

-w:是否有写入权限

-x:是否有执行权限

3、整数值比较:

-eq:等于

-ne:不等于

-gt:大于

-lt:小于

-ge:大于等于

-le:小于等于

4、字符串比较:

=:字符串内容相同

!=:字符串内容不相同

-z:字符串内容为空

5、逻辑测试:

-a或&&:而且,两个条件同时满足才为真,前面的命令执行成功才执行后面的命令

-o或||:或者,一个条件成立即为真

!:否,条件不满足时为真

6、if语句:条件判断语句,成立则执行,否则推出或进行下一个判断,最多执行一次命令

1)单分支:判断一次,成立执行,不成立退出

If 【 条件表达式 】

then

命令

fi

2)双分支:判断一次,成立执行一条命令,不成立执行另一条命令

If 【 条件表达式 】

then

命令1

Else

命令2

fi

3)多分支:判断多次,依次执行

If 【 条件表达式 】

then

命令1

elif 【 条件表达式 】

then

命令2

else 【 条件表达式 】

then

命令3

fi

一、条件测试操作

1、文件测试

(1)测试目录/media是否为目录,$?返回值为0,表示存在此目录。

如果$?返回值非0,表示不存在此目录

(2)测试目录是否存在,输出结果更加直观。

输出“yes”表示该目录存在

 

无“yes”输出表示该目录不存在

2、整数值比较

(1)判断当前已登录的用户数,当超过5个时输出“too many”。

没有出现“too many”说明没有超过5个。

(2)判断当前可用的空闲内存(buffers/cache)大小,当低于2048MB输出具体数值。

3、字符串比较

用户输入“yes”或“no”来确认某个任务

 

4、逻辑测试

判断当前linux系统的内核版本是否大于2.4。

查看内核

 

判断

二、if条件语句

1、单分支if语句

(1)判断挂载点目录,若不存在则自动创建

步骤:首先创建脚本vim  chkmountdir.sh 编辑脚本,赋予x权限并执行(详细脚本如下图)

执行并查看

(2)判断当前用户是否为root,如果不是则报错并执行“exit  1”退出脚本,不再执行其他代码。

步骤:编辑一个脚本 vim /opt/chkifroot.sh并切换用户验证

创建并切换用户验证

2、双分支if语句

(1)判断目标主机是否存活,显示检测结果

步骤:创建脚本 vim pinghost.sh

赋予x权限并验证,注:本机地址是192.168.1.10

(2)检查vsftpd服务是否运行,若运行则列出监听地址,PID号;否则输出提示“警告,vsftpd服务不可用1”。(插入linux系统安装光盘,安装一下vsftpd软件包)。

启动vsftpd服务(service  vsftpd start),运行一下脚本,查看结果。

停止vsftpd服务(service  vsftpd  stop),运行一下脚本,查看结果。

步骤:编写脚本 vim chkftpd.sh 并且要安装vsftpd服务

赋予x权限并验证

3、多分支if语句

(1)根据输入的考试分数不同来区分优秀,合格,不合格三挡。

步骤:编写脚本 vim gradediv.sh

赋予x权限并执行

文章参考微信公众号:L宝宝聊IT

Shell脚本应用(if语句的结构)的更多相关文章

  1. shell 脚本之判断语句 if 详解

    使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...

  2. shell脚本-循环选择语句

    shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...

  3. Linux Shell脚本编程while语句

    Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存 ...

  4. shell脚本之循环语句与函数

    shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...

  5. shell脚本之if语句

    一.前言 结构化编程中,主要有三种结构:顺序.分支.循环.由此可见分支判断的重要性. 而且在shell编程中往往会遇到进行判断的情况,比如:判断文件是否存在.目录是否存在等等. 二.if语句的结构 i ...

  6. 《linux就该这么学》第五节课,shell脚本的各种语句!

    第四章shell语句 (据课本和虚拟机实验排版,借鉴请改动)               4.2:shell脚本   脚本包括:脚本声明,脚本注释,脚本内容和命令 例:#!/bin/bash      ...

  7. shell脚本、if语句、for循环语句

    shell在shell脚本中,如果用户不输入东西,系统不自动退出,this is a bug!文件测试语句:-d -f -r -w -x -e逻辑测试语句:“&&”与(同时满足) “| ...

  8. shell脚本的if语句,判断某程序是否存在,不存在启动该程序!

    想必大家都知道 "如果......那么......" 这种语法的应用吧! 当然呢,linux下对于这种用法也是有所考虑的,很多时候我们都需要写一个shell脚本,难免会避免if语句 ...

  9. shell脚本if判断语句报错[: too many arguments的两种原因

    shell脚本,if判断语句报错[: too many arguments 我遇到过两种情况: 1.第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断 ...

  10. Shell脚本中循环语句for,while,until用法

    循环语句: Bash Shell中主要提供了三种循环方式:for.while和until. 一.for循环 for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区 ...

随机推荐

  1. underscore.js源码解析【对象】

    // Object Functions // ---------------- // Keys in IE < 9 that won't be iterated by `for key in . ...

  2. leetcode — merge-k-sorted-lists

    import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; /** * Source : ht ...

  3. 内核开发知识第二讲,编写Kerner 程序中注意的问题.

    一丶函数多线程的安全问题 什么是函数多线程安全. 简单来说就是 ,一个函数在调用过程中.还没有返回的时候.再次被其他线程调用了.但是函数执行的结果是可靠的.就可以了说这个函数是安全的. 比如我们在用户 ...

  4. 认识Nginx,理解原理和功能

    前端工程师在理解Nginx之后,就能更好的与后端工程师沟通,为了能提高工作效率,这两天抽空读了<Nginx高性能Web服务器实战教程>. 一.Nginx Nginx是一款高性能的Web服务 ...

  5. Linux 安装 JDK

    本篇博客用于记录一下在 Linux 系统下安装 Java 环境. 在大部分的 Linux 系统中都有安装 Open JDK,所以最好是先卸载 Open JDK 后在进行我们的 JDK 安装.Open ...

  6. VB.Net DataSet 填充資料庫內容

    '導入命名空間Imports System.Data.OleDb '定義變量 Dim ds As DataSet = New DataSet() Dim i, cn As Integer Dim Sq ...

  7. Spring基于纯注解方式的使用

    经过上篇xml与注解混合方式,对注解有了简单额了解,上篇的配置方式极大地简化了xml中配置,但仍有部分配置在xml中进行,接下来我们就通过注解的方式将xml中的配置用注解的方式实现,并最终去掉xml配 ...

  8. Linux常用基本命令:三剑客命令之-sed

    sed是一个很强大的文件处理工具,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作 格式:sed [option] [command] [file] 常用命令: a   ∶新 ...

  9. Fundebug是这样备份数据的

    摘要: 数据还是要备份的,万一删库了呢? 本文代码仓库: fundebug-mongodb-backup 引言 今年8月,腾讯云竟然把客户前沿数据的数据弄没了,Fundebug在第一时间进行了一些简单 ...

  10. spring boot 随手记

    1.当加入security 起步依赖后,如果不做任何手动配置的话,默认会跳转到一个登录页面,不管你喜不喜欢,所有的请求都必须登录,用户名和密码是保存在内存中的, 默认用户名是user  密码在控制台里 ...