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)
petmasterpetmaster
上一篇 2015-12-28 15:47
下一篇 2016-01-01 15:00

相关推荐

  • bash shell 循环语句的使用

    条件选择if语句       if语句是选择执行的,条件满足则执行,不满足则退出,if语句也可嵌套,就是if语句里面也可以在进行if语句 单分支 if 判断条件;then statement1 fi   双分支 if 判断条件;then 条件为真得分支 else 条件为假的分支 fi   …

    Linux干货 2016-08-18
  • 新的旅途

    三月末的北京已经让人感觉有些炎热,这是我第一次来北京。对我而言这是我人生的另一个起点,押上了我所有骄傲承载着我的梦想对未来所有的期望。这是一场豪赌,新的旅途,从今天开始。

    2018-03-26
  • 编程真难啊

    上周,在Sun的Java论坛上出现了一个这样的帖子,这个贴子的链接如下:http://forums.sun.com/thread.jspa?threadID=5404590&start=0&tstart=0 LZ的贴子翻译如下: 大家好,我是一个Java的新手,我有一个简单的问题:请问我怎么才能反转一个整数的符号啊。比如把-12转成+12。是…

    Linux干货 2015-04-03
  • 使用vim编辑器进行编程

    1.首先需要配置vim的语法风格,具体操作如下 # vim /etc/vimrc set nu 这是设置显示行号** set showmode 设置在命令行界面最下面显示当前模式等。 set ruler 在右下角显示光标所在的行数等信息 set autoindent 设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐 set ts=4 注:…

    2017-04-09
  • Linux的启动流程

    启动流程  POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、 串并行接口、键盘、 CD-ROM光驱等硬件情况的检测。 ROM: BIOS, Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、 …

    Linux干货 2016-09-13
  • shell编程之函数

    函数:函数function是由若干条shell命令组成的语句块,实现代码 重用和模块化编程      1)函数的定义: 可在 命令行,脚本的一部分,只有函数的单独文件 中定义        两部分组成:函数名和函数体;函…

    Linux干货 2016-08-21