文档章节

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

© 著作权归作者所有

共有 人打赏支持
心中的理想乡
粉丝 16
博文 73
码字总数 80276
作品 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
2017-12-5Linux基础知识(15)shell编程

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

刘祥宇
2017/12/07
0
0
【目录】 Linux技术玩家 持续更新

[编辑器相关] Windows下用notepad++ 打造Linux 代码编辑环境 送给不使用vim的Linux Guy http://990487026.blog.51cto.com/10133282/1844735 ubuntu 源码编译安装最新的vim 8.0 http://990487...

990487026
2016/09/01
0
0
教会你Linux Shell自动交互的三种方法

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

魏邪乎
2014/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部