Shell编程之条件语句

学习目标:

掌握shell脚本条件测试

掌握if语句编程

目录结构:

条件测试

条件测试概述

l  对特定的条件进行判断,以决定如何执行操作

l  测试的方法

方法1:test 条件表达式

方法2:【条件表达式】

l  当条件成立时,测试语句的返回值为0,否则为其他数值

条件测试的分类

1、 文件测试

2、 整数测试

3、 字符串测试

4、 逻辑测试

文件测试

l  格式:【 操作符 文件或目录 】

l  常用的测试操作符

-d:测试是否为目录(directory)

-e:测试目录或文件是否存在(exist)

-f:测试是否为文件(file)

-r:测试当前用户是否可读(read)

-w:测试当前用户是否可写(write)

-x:测试当前用户是否可执行(excute)

实例:

[root@poll ~]# [ -d /etc ]

[root@poll ~]# echo $?

0

[root@poll ~]# [ -d /etc/profile ]

[root@poll ~]# echo $?

1

[root@poll ~]# [ -d /etc ]&&echo "yes"    //&&意思是前面执行成功载执行后面

Yes

整数测试

l  格式:[ 整数1 操作符 整数2 ]

l  常用的测试测试操作符

-eq:等于(equal)

-ne:不等于(not equal)

-gt:大于(greater than)

-lt:小于(lesser than)

-le:小于或等于(lesser or equal)

-ge:大于或等于(greater or equal)

实例:

[root@poll ~]# who |wc -l

3

[root@poll ~]# [ `who |wc -l` -gt 5 ] && echo too many

[root@poll ~]# [ `who |wc -l` -gt 2 ] && echo too many

too many

字符串测试

l  格式1:

[ 字符串1 = 字符串2 ]

[ 字符串1 != 字符串2 ]

l  格式2:

[ -z 字符串 ]

常用的测试操作符:

=:字符串内容相同

!=:字符串内容不同

-z:字符串内容为空

实例:

[root@poll ~]# echo $LANG

zh_CN.UTF-8

[root@poll ~]# [ $LANG!="en.US" ] && echo "Not en.US"

Not en.US

逻辑测试

l  格式1:

[ 表达式1 ] 操作符 [ 表达式2 ] …

命令1 操作符 命令2 …

l  常用的测试操作符

-a或&&:逻辑与,“而且”的意思,两个表达式都要执行成功

-o或||:逻辑或,“或者”的意思,有一个执行成功就行了

!:逻辑否

实例:

[root@poll ~]# [ -d /etc ] && [ -r /etc ] && echo "you can open it"

you can open it

[root@poll ~]# [ -f /etc ] || [ -d /home ] && echo ok

Ok

If语句

If单分支语句

l  If单分支语句结构

if 条件测试操作

then 命令序列

fi

if执行成功然后执行then。if没有执行成功,啥都不干

if双分支语句结构

if 条件测试操作

then 命令序列1

else 命令序列2

fi

if执行成功,然后执行then。If没有执行成功,执行else

实例:

[root@poll ~]# cat a.sh

#!/bin/bash

#This is my first shell-script

#2018-03-16

read -p "请输入你的性别:" one

if [ $one = 男 ]

then

echo "you are handsome"

else

echo "you are beautiful"

fi

[root@poll ~]# sh a.sh

请输入你的性别:男

you are handsome

[root@poll ~]# sh a.sh

请输入你的性别:女

you are beautiful

if多分支语句

if 条件测试操作1

then 命令序列1

elif 条件测试操作2

then 命令序列2

else 命令序列3

fi

条件测试操作1执行成功,执行命令序列1;失败则执行条件测试2,条件测试2执行成功则执行命令序列2,失败则执行命令序列3。

实例:

[root@poll ~]# vi b.sh

#!/bin/bash

#This is …

read -p " 请输入你的年龄:" one

if [ $one -le 18 ]

then echo "you are young"

elif [ $one -gt 18 ] && [ $one -le 60 ]

then echo "you are so happy"

else echo "you are old"

fi

[root@poll ~]# sh b.sh

请输入你的年龄:12

you are young

[root@poll ~]# sh b.sh

请输入你的年龄:19

you are so happy

接下来讲case语句

02 shell编程之条件语句的更多相关文章

  1. if语句 条件测试 shell编程之条件语句

    shell 编程之条件语句一.条件测试  ① test命令 测试  ② 文件测试  ③ 整数值比较  ④ 字符串比较  ⑤ 逻辑测试二.if语句的结构  单分支结构  双分支结构  多分支结构三.ca ...

  2. Shell编程之条件语句:if、case语句

    Shell编程之条件语句:if.case语句               一.条件测试                1)test命令测试                2)整数值比较         ...

  3. shell编程之条件语句

    目录: 一.条件测试 1.test命令测试 2.文件测试 3.字符串比较 4.逻辑测试 二.if语句 1.if单分支语句 2.if双分支语句 3.if多分支语句 三.case语句 case多分支语句 ...

  4. Linux Shell编程(1): 条件语句

    1.if—then#!/bin/bashif date              如果命令运行成功(退出码为0),则then部分的命令被执行then   echo "good"fi ...

  5. Linux - 简明Shell编程05 - 条件语句(Case)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash var=$1 # 将脚本的第一 ...

  6. 04 shell编程之循环语句

    Shell编程之循环语句 学习目标: 掌握for循环语句编程 掌握while循环语句编程 目录结构: For循环语句 l  读取不同的变量值,以逐个执行同一组命令 l  For语句结构 for 变量名 ...

  7. shell编程之循环语句for / while / until

    shell编程之循环语句与函数 一.条件测试 二.循环语句 ① for循环语句结构(遍历) 示例1 示例2 ② while循环语句结构(迭代) 示例1 示例2 ③ until 循环语句结构 示例1 一 ...

  8. Shell编程之循环语句与echo的用法

    Shell编程之循环语句与echo的用法 目录 Shell编程之循环语句与echo的用法 一.echo用法 1. echo常用选项 2. 常用的转义字符 3. 特殊符号%.#的用法 二.循环语句 1. ...

  9. 转 功能强大的shell:if条件语句

    原文 http://blog.zol.com.cn/2322/article_2321767.html 功能强大的shell:if条件语句 if语句测试条件,测试条件返回真(0)或假(1)后,可相应执 ...

随机推荐

  1. 01_Redis基础

    [Redis定义(参考了百度百科)] Redis是一个key-value存储系统.与Memchached类似,Redis支持的value类型更多,包括String.list.set.zset(有序集合 ...

  2. 【Linux】Windows与Linux之间的文件共享(基于网络)

    切记:Linux的安全机制的存在--iptables和selinux. 一.操作前提 1.1 从Windows能够ping通Linux 1.2 关闭Linux防火墙 command1:/etc/ini ...

  3. linux c开发: 在程序退出时进行处理

    有时候,希望程序退出时能进行一些处理,比如保存状态,释放一些资源.c语言开发的linux程序,有可能正常退出(exit),有可能异常crash,而异常crash可能是响应了某信号的默认处理.这里总结一 ...

  4. 如何设置树莓派的VNC开机时启动

    转载:http://www.linuxidc.com/Linux/2016-12/138793.htm 下面正式开始配置 首先 sudo nano /etc/init.d/vncserver 然后 复 ...

  5. matlab练习程序(随机粒子切换特效)

    视频制作软件中一般都会有相邻帧切换的特效,我过去用过vagas好像就有很多切换特效. 我想这个也算是其中一种吧,虽然我不确定实际中到底有没有这种切换. 实际上我只是下班后太无聊了,写着玩的,没什么高深 ...

  6. IT小小鸟读书笔记2

    Part4: 一.    大学的时光真的很容易荒废,自己的实力到头来和自己的成绩单一样空虚,其实自己也是深有同感的. 二.    这个观点我十分的认同:在某个方面比别人多5%的深度,可能拿到的报酬就是 ...

  7. 调试一个Ext打开的window窗口内嵌Iframe的form提交问题

    一个奇怪的问题是:潜逃在iframe里的页面单独提交都是正常,放到iframe里面通过js调用在parent页面.提交总是被莫名其妙的杀掉. 确定js简单无错之后,继续看parent的处理逻辑,有这么 ...

  8. Selenium2学习(十七)-- js处理日历控件(修改readonly属性)

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  9. JavaScript专题

    1. 在ajax的任何回调方法中,比如success回调,使用return,将会无效 2. //todo

  10. ORACLE不使用工具的情况下获取对象DDL

    set line 200set pagesize 0set long 99999set feedback offset echo off获得表.索引.视图.存储过程.函数的DDL:select dbm ...