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. cf1072B. Curiosity Has No Limits(枚举)

    题意 题目链接 给出两个序列\(a, b\),求出一个序列\(t\),满足 \[a_i = t_i | t_{i + 1}\] \[b_i = t_i \& t_{i + 1}\] 同时,\( ...

  2. Windows 10:开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用 的解决方法

    今晨起来开机,开完机一看,弹出啦一个框框上面写着“C:\WINDOWS\system32\config\systemprofile\Desktop不可用...” 当我点击了确定之后,发现屏幕一片黑,只 ...

  3. JavaScript中8个容易犯的错误

    这里dbestech针对JavaScript初学者给出一些技巧和列出一些陷阱. 1. 你是否尝试过对数组元素进行排序? JavaScript默认使用字典序(alphanumeric)来排序.因此,[1 ...

  4. css 条纹背景

    先介绍文章用到的二个知识点 background-size 属性 语法 background-size: length|percentage|cover|contain; css线性渐变 linear ...

  5. SQL Server日期格式化

    0   或   100   (*)     默认值   mon   dd   yyyy   hh:miAM(或   PM)       1   101   美国   mm/dd/yyyy       ...

  6. linux漏洞分析入门笔记-bypass_PIE

    ubuntu 16.04 IDA 7.0 docker 0x00:漏洞分析 1.ASLR的是操作系统的功能选项,作用于executable(ELF)装入内存运行时,因而只能随机化stack.heap. ...

  7. Entity Framework:“无法加载指定的元数据资源

    System.Data.Entity.Core.MetadataException:“无法加载指定的元数据资源 CodeFirst方式使用EF,写入数据时报错.System.Data.Entity.C ...

  8. May 17th 2017 Week 20th Wednesday

    Men are nearly always willing to believe what they wish. 人总爱想入非非,把愿望变成现实. It is just the humancondit ...

  9. 遍历目录树 - Unicode 模式

    =info     遍历目录树 支持 Unicode     Code by 523066680@163.com     2017-03         V0.5 使用Win32API判断目录硬链接 ...

  10. MySQL学习(二)数据类型

    截取书中内容留作学习.... 1.整数类型 2.浮点数与定点数类型 3.日期时间类型 向数据库中插入当前系统时间:CURRENT_TIME或者NOW() 4.文本字符串类型 MySQL枚举类型:cre ...