shell脚本编程之运算

一、数学运算

  1、expr命令

    此命令可以在命令行执行数学运算操作。

8.jpg

    由于此命令使用时过于麻烦,所以不推荐使用。

  2、方括号和双圆括号

     $[ EXPRESSION ]

     $(( EXPRESSION ))

     在之前的实例中已经出现过方括号的表达式:$[$a+$b]。

  3、let命令

12.jpg

  4、算术运算符

    x+=y:相当于x=x+y

    x-=y:相当于x=x-y

    x*=y:相当于x=x*y

    x/=y:相当于x=x/y

    x++: 相当于x=x+1

    x–: 相当于x=x-1

二、字符串连接

  变量引用后方直接跟字串时,变量名要加{}。

1.jpg

三、条件测试

  条件测试的表达式可以使用以下三种格式:

    [ expression ]:注意中括号与表达式之间有空格;

    [[ expression ]]:注意中括号与表达之间有空格;

    test expression:上面的两种格式其实都是test命令的其它格式。

  test命令可以进行3种类型的条件判断:整数测试、字符串测试、文件测试。 

  1、整数测试

    -eq:测试两个整数是否相等;

    -ne:测试两个整数是否不等,不等为真,相等为假;

    -gt:测试一个数是否大于一个数,大于为真,否则为假;

    -lt:测试一个数是否小于一个数,小于为真,否则为假;

    -ge:测试一个数是否大于一个数,大于等于为真,否则为假;

    -le:测试一个数是否大于一个数,小于等于为真,否则为假;

    实例:如果两个参数相等则显示"equal",否则显示"different"。

1.jpg

  2、字符测试

    ==:测试是否相等,等为真,不等为假;

    !=:测试是否不等,不等为真,等为假;

    =~:模式配置;

    -z string:测试指定字符串是否为空,空为真不空为假

    -n string:测试指定字符串是否为空,空则假不空为真

    -s string:测试指定字符串是否不空,不空为真,空则为假

    实例:

2.jpg

3.jpg

   上面是一个使用"-z"的例子,如果改为-n的话则如下图所示:

4.jpg

    注:变量比较时最好加上引号(单双都可以),否则如果变量为空的话,会报错。

  3、文件测试

    -a FILE:测试FILE存在为真,否则为假;

    -e FILE:测试FILE是否存在,存在为真,否则为假;

    -l/-L FILE:软链接文件;

    -b:块设备;

    -c:字符设备;

    -S:套接字文件;

    -p:命名管道;

    -s:非空文件为真;

    -f FILE:测试FILE是否为普通文件;

    -d FILE:测试指定路径是否为目录;

    -r FILE:测试文件对当前用户是否可读;

    -w FILE:测试文件对当前用户是否可写;

    -x FILE:测试文件对当前用户是否可执行;

    -N FILE:修改文件时间比访问时间新则为真;

   内容重定向到文件中,但文件还没有被打开过的情况

    file1 -nt file2:file1比file2新则为真;

    file1 -ot file2:file1比file2旧则为真。

    实例:如果/test存在则将其重命名为/new-test,否则创建这个目录:

5.jpg

   实例:给定一个参数,首先判断此参数是否存在,如果存在判断是否为文件,若为文件确保其有执行权限:

6.jpg

   验证:

7.jpg

  4、组合测试条件

    在多个条件间实现逻辑运算

      -a:与关系 [ condition1 -a condition2 ]

      -o:或关系 [ condition1 -o condition2 ]

      !:非关系  [ ! condition ] 或 [ -not condition ]

8.jpg

9.jpg

四、命令间的逻辑关系

    &&:逻辑与,只有当左边的条件为真时才会执行右边的语句;

    ||:逻辑或,当左边的条件为假时才会执行右边的语句。

   上面的实例也可以使用逻辑与来完成:

10.jpg

10.jpg

原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/10690

(0)
上一篇 2015-12-28 15:47
下一篇 2016-01-01 15:00

相关推荐

  • 用户,组和权限管理 基础命令整理

    安全3A任何一个安全策略都应该有Authentication(认证)、Authentication(授权)、Accouting|Audition(审计)这三个措施。 用户(User)Linux用户是安全3A中的Authentication(认证)措施。用户在登录时,系统会检查用户输入的用户名和密码。如果用户输入的用户名和密码匹配,会根据用户信息给用户分配一个…

    Linux干货 2017-03-16
  • 与正则表达式的第一次亲密接触

    Linux文本处理三剑客 grep:文本过滤(模式:psttern)工具 grep,egrep,fgrep (不支持正则表达式搜索) sed:stream editor,文本编辑工具 awk:Linux上的实现gawk,文本报告生成器 下面就先谈一谈:grep及正则表达式;egrep及扩展的正则表达式 grep grep:Goobal search REgu…

    Linux干货 2017-04-06
  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。  cp -rf /etc/skel/  /home/ mv /home/skel /home/tuser1 chmod  -R 700 /home/tuser1 或chmod -R  …

    Linux干货 2016-12-03
  • N25期—第一周作业

    计算机的组成及其功能 计算机主要由硬件和软件两部分组成, 硬件目前由5大部件组成 控制器:类似人类的大脑!控制整个计算机的运作 运算器:对数据进行逻辑运算处理 存储器:存放数据部件 输出设备:比如显示器,打印机 输入设备:比如键盘,鼠标 Linux发行版本 主要三大分之:Debian系,Reb Hat系,Slackware系。 1.Debian GNU / …

    Linux干货 2016-12-01
  • 回溯法 -数据结构与算法

    1.回溯法算法思想: 定义:         回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 1、回溯法适用:有许多问题,当需要找出它的解集(…

    Linux干货 2015-04-07
  • MySQL流程函数

    MySQL流程函数 IF(value,x y) 如果value是真,返回x,否则返回y MariaDB [learn]> INSERT INTO salary(sal) VALUES (1000),(2000),(3000),(4000),(5000),(6000),(NULL); Query OK, 7 rows affected (0.06 sec…

    Linux干货 2017-05-02