文档章节

shell编程总结8(if相关)

心中的理想乡
 心中的理想乡
发布于 2017/02/25 21:29
字数 992
阅读 6
收藏 0

我们有高兴,有不高兴;我们有在意,有不在意;我们有在行,有不在行。。。我们之所以为人,是因为我们拥有大脑,情感与性格,我们不仅仅只会吃,只会做爱,我们还会品尝食物的美味,还会挑选与自己性格合得来的伴侣,我们更会如何抑制或是排解自我的负面情绪,不至于崩溃。你可以不多想,在意少,只顾自己,但是你一定会得到应有的报应,到那时,我想食色应该都会失色了。
1、使用if-then语句:
if command
then
    commands
fi
说明:bash sell中if语句运行if行定义的那个命令,如果该命令的退出码是0,位于then部分的命令就会被执行。如果该命令的退出码是其他的什么值,那么then部分的命令就不会被执行
举例:
    #!/bin/bash
    if data
        echo "it worked"
    fi
2、if-then-else语句:
if command
then
    commands
else
    commands
fi

3、嵌套if:
if command1
then
    commands
elif command2
then
    more commands
fi

4、使用test命令:test命令提供了在if-then语句中测试不同条件的途径。如果test命令中列出的条件成立,test命令就会退出并返回退出码0,这样if-then语句就与其他编程语言中的if-then语句一样了。
    举例:
        if test condition
        then
            commands
        fi
    另外一种使用方法:
        if [ commands ]
        then
            commands
        fi
        这种使用方式注意必须要在左括号的右侧与右括号的左侧各加一个空格,否则会报错
    主要判断条件:
        (1)数值比较
        (2)字符串比较
        (3)文件比较

5、数值比较
    主要比较的几个关键字:
        -eq    相等
        -ge    大于或等于
        -gt    大于
        -le    小于或等于
        -lt    小于
        -ne    不等于
    举例:
        if [ 3 -gt 2 ]
        then
            echo "This is a test"
        if
    注意:不能使用浮点值进行判断

6、字符串比较
    主要比较的几个关键字符:
        =        相同
        !=        不同
        <        小
        >        大
        -n     非0
        -z        为0
    问题:对于>与<这两个符号要进行转义:\>、\<
    测试项:test在字符串比较的时候,大小写情况

7、文件比较
    -d file 是否存在并且是一个目录
    -e file 是否存在
    -f file 是否存在并是一个文件
    -r file 是否存在并可读
    -s file
    -w file
    -x file
    -O file
    -G file
    file1 -nt file2
    file1 -ot file2

8、文件比较
    -d file 检查file是否存在并是一个目录
    -e file 是否存在
    -f file 是否存在并是一个文件
    -r file 是否存在并可读
    -s file 存在并非空
    -w file 存在并可写
    -x file 存在并可执行
    -O file 是否存在并属当前用户所有
    -G file 是否存在并且默认组与当前用户相同
    file1 -nt file2 检查file1是否比file2新
    file1 -ot file2 检查file1是否比file2旧
    举例:
        #!/bin/bash
        if [ -d $HOME ]
        then
            echo "your HOME directory exists"
            cd $HOME
        else
            echo "There is a problem with your HOME directory"
        fi

9、复合条件测试:一共有两种布尔运算符可用
    [ condition1 ] && [ condition2 ]
    [ confition1 ] || [ confition2 ]

10 if-then的高级特性
    (1)使用双尖括号:(( expression ))
                 说明:可以放入高级的数学表达式,test只支持简单的算术操作
                  另外支持的操作符:
                      ++、--、!(逻辑求反)、~(位求反)、**幂运算、<<(左位移)、>>(右位移)、&、|、&&、||
                  举例:
                      #!/bin/bash
                      var1=10
                      if (( $val1**2>90 ))
                      then
                          (( val2 = $val1**2))
                          echo "The square of $val2 is $val2"
                      fi
    (2)使用双方括号:[[ expression ]]
                 说明:双方括号里的表达式使用了test命令中采用的标准字符串进行比较,并且提供了test命令未提供的一个热性,模式匹配 
                 举例:
                     #!/bin/bash
                     if [[ $USER == r* ]]
                     then
                         echo "Hello $USER"
                     else
                         echo "Sorry.I do not know you"
                     fi
11、case命令;
            case variable in 
            pattern1 | pattern2) commands1;;
            pattern3) commands2;;
            *) default command2;;
            esac
        举例:
            #!/bin/bash
            case $USER in
            rich | barbara)
                echo "adf"
                echo "asdasd";;
            testing)
                echo "2342"
            jessica)
                echo "asd234"
            *)
                echo "sorry"
            esac

© 著作权归作者所有

共有 人打赏支持
心中的理想乡

心中的理想乡

粉丝 23
博文 76
码字总数 104605
作品 0
深圳
程序员
私信 提问
linux运维实战练习-2015年9月13日-9月15日课程作业

一、作业(练习)内容: 1、描述shell程序的运行原理(可附带必要的图形说明); 2、总结shell编程中所涉及到的所有知识点(如:变量、语法、命令状态等等等,要带图的哟); 3、总结课程所讲...

xjxiaolei
2015/09/23
0
0
python变量数据类型总结

今日在对比shell编程和python编程时,对于关键字、数据类型、流程控制、异常处理这些有了新的看法,同时对“面向过程编程-函数式编程-面向对象编程”的编程思想也有了一些更深的看法,所以准...

yumushui991
2017/03/09
0
0
【成都】哆可梦游戏公司招聘DBA 1 名, 高级运维1名,初级运维1名

Mysql DBA 数据库工程师 岗位说明: 1.参与公司业务需求,提供建议,负责数据库设计,为开发团队提供数据库支持. 2.负责MySQL数据库架构(包括容灾)设计与部署. 3.数据库备份还原策略的设计、实施...

nagios.fre
2012/05/10
1K
10
2017-12-5Linux基础知识(15)shell编程

shell编程是在Linux的基础知识中所必须掌握的语言,它也是一个命令的集合,如果学会的话,我们将会事半功倍,将重复的操作通过shell编程脚本来实现,减轻了一定的负担,那么现在就来讲一下s...

刘祥宇
2017/12/07
0
0
教会你Linux Shell自动交互的三种方法

你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享一下。 一、背景...

魏邪乎
2014/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cnetos7+docker+rancher构建基于DevOps的全自动CI【01】

来自DevOps实践分享,分享从开发代码到生产环境部署的一条龙操作的实践及经验, 包含工具技术的选型及考量、私有代码库与私有镜像库的应用等。 1、环境选择 安装Rancher环境,一定要在干净的...

Elson
7分钟前
0
0
21分钟教会你分析MaxCompute账单

背景 阿里云大计算服务MaxCompute是一款商业化的大数据分析平台,其计算资源有预付费和后付费两种计费方式。并且产品每天按照project为维度进行计量计费(账单基本情况下会第二天6点前产出)...

zhaowei121
10分钟前
0
0
CTO职场解惑指南系列(一)

基于科技能够改变世界的事实,几乎每个公司的程序员都自带闪光灯。程序员的手和普通人的手自然是有区别的,“我们可是用双手改变了世界” 。(码农真的是靠双手吃饭,呵呵) 这个世界上但凡靠...

阿里云云栖社区
15分钟前
0
0
css实现图片自适应容器宽高

css实现图片自适应容器宽高的做法一般如下所示 <style>div{width: 200px; height: 200px}div img{width: 100%; height: 100%}</style><div><img src="xxxx.png" /></div> 当外层容......

小草先森
15分钟前
0
0
PlatON在CentOS上编译部署

本文作者为万向区块链CTO罗荣阁。 目录 PlatON在CentOS上编译部署 1. CentOS 环境准备 1.1. 使用rpm 安装devtoolset-7 1.2. 使用rpm 安装dos2unix 1.3. 准备PlatON代码 1.4. 确保build脚本正...

万向区块链
23分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部