ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 退出、测试、判断及操作符 shell

退出、测试、判断及操作符 shell

Linux操作系统 作者:studywell 时间:2015-12-29 22:13:29 0 删除 编辑
转自:http://blog.sina.com.cn/s/blog_6bd7d943010150h2.html

退出、测试、判断及操作符 shell


提纲:退出状态;

测试:整数比较运算符;字符串运算符;文件操作符;逻辑运算符
判断:简单if结构;if/else结构;if/elif/else结构;case结构
运算符:算术运算符;位运算符;自增自减运算符;数字常量

退出状态:
在Linux系统中,每当命令执行完成后,系统都会返回一个退出状态。该退出状态用一整数值表示,用于判断命令运行正确与否。
若退出状态值为0,表示命令运行成功
若退出状态值不为0时,则表示命令运行失败
最后一次执行的命令的退出状态值被保存在内置变量“$?”中,所以可以通过echo语句进行测试命令是否运行成功

测试结构
测试命令可用于测试表达式的条件的真假。如果测试的条件为,则返回一个 0值;如果测试的条件为,将返回一个非 0整数值
测试命令有两种结构:
一种命令是使用test命令进行测试,格式为:
       test expression
          其中条件expression是一个表达式,该表达式可由数字、字符串、文本和文件属性的比较,同时可加入各种算术、字符串、文本等运算符。
另一种命令格式:
       [ expression ]
             其中“[ ”是启动测试的命令,但要求在expression后要有一个“ ]”与其配对。使用该命令时要特别注意“[”后和“]”前的空格是必不可少的。

整数运算符
整数比较运算符是算术运算中很简单的一种,用于两个值的比较,测试其比较结果是否符合给定的条件。
例如:
        a –eq b
      如果满足a等于b,则测试的结果为真(测试条件用0表示)
       如果a不等于b,则测试结果为假(测试条件用非0表示)
测试时有两种格式:
     (1) test "num1" numeric_operator  "num2“
     (2) [ "num1" numeric _operator "num2" ]

整数比较运算符
描述
num1 -eq num2
如果 num1等于num2,测试结果为0
num1 -ge num2
如果 num1大于或等于num2,测试结果为0
num1 -gt num2
如果 num1大于num2,测试结果为0
num1 -le num2
如果 num1小于或等于num2,测试结果为0
num1 -lt num2
如果 num1小于num2,测试结果为0
num1 -ne num2
如果 num1不等于num2,测试结果为0

字符串运算符
字符串运算符用于测试字符串是否为空、两个字符串是否相等或者是否不相等

字符串运算符 描述

string         测试字符串string是否不为空
-n string 测试字符串string是否不为空
-z string 测试字符串string是否为空
string1 = string2 测试字符串string1是否与字符串string2相等
string1 != string2 测试字符串string1是否与字符串string2 不相等

文件操作符
Linux Shell提供了大量的文件操作符,这样可以完成测试文件的各种操作。比较常用的文件操作符如下表所示:

文件运算符 描述
-d file 测试file是否为目录
-e file         测试file是否存在
-f file         测试file是否为普通文
-r file         测试file是否是进程可读文件
-s file         测试file的长度是否不为0
-w file         测试file是否是进程可写文件
-x file         测试file是否是进程可执行文件
-L file         测试file是否符号化链接
逻辑运算符:
逻辑运算符主要包括逻辑非、逻辑与、逻辑或运算符:

逻辑操作符 描述

!expression    如果expression为假,则测试结果为真
expression1 –a expression2 如果expression1和expression同时为真,则测试结果为真
expression1 –o expression2    如果expression1和expression2中有一个为真,则测试条件为真
简单if结构
简单的if结构是:
      if  expression
      then 
          command
          command
           …
     fi
在使用这种简单if结构时,要特别注意测试条件后如果没有“;”,则then语句要换行,否则会产生不必要的错误。如果if和then可以处于同一行,则必须用“;”

if/else结构
命令是双向选择语句,当用户执行脚本时如果不满足if后的表达式也会执行else后的命令,所以有很好的交互性。其结构为:
       if expression1
       then 
              command
              …
              command
        else 
              command
              …
              command
        fi
if/elif/else结构
if/elif/else结构针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件,则进行某种处理,否则接着判断另一个条件,直到找到满足的条件,然后执行相应的处理”。其语法格式为:
if expression1
    then    
         command                                               
         command
         …
    elif expression2
    then
         command
        command
        …
elif expressionN
then
    command
    …
    command
else 
   command
    …
   command
fi
case结构
和if/elif/else结构一样,case结构同样可用于多分支选择语句,常用来根据表达式的值选择要执行的语句,该命令的一般格式为:
case Variable  in
value1)
    command
command;;
value2)
    command
    …
    command;;
valueN)
     command
     …
     command;;
*)
      command
      …
      command;;
esac
算术运算符
在Linux Shell中,算术运算符包括:+(加运算)、-(减运算)、*(乘运算)、/(除运算)、%(取余运算)、**(幂运算),这些算术运算符的举例及其结果如下表所示:
运算符            举例      结果
+(加运算)    3+5       8
-(减运算)    5-3       2
*(乘运算)    5*3       15
/(除运算)    8/3        2
%(取余运算)    15%4        3
**(幂运算)    5**3       125
位运算符
位运算符在Shell编程中很少使用,通常用于整数间的运算,位运算符是针对整数在内存中存储的二进制数据流中的位进行的操作。
运算符                     举例     解释和value值
<<(左移)         value=4<<2  4左移2位,value值为16
>>(右移)         value=8>>2   8右移2位,value值为2
&(按位与)         value=8&4   8按位与4,value值为0
|(按位或)         value=8|4   8按位或4,value值为12
~(按位非)          value=~8     按位非8,value值为-9
^(按位异或)          value=10^3    10按位异或3,value值为9
自增自减运算符:
自增自减操作符主要包括前置自增(++variable) 、前置自减(--variable)、后置自增(variable++)和后置自减(variable--)。
前置操作首先改变变量的值(++用于给变量加1,--用于给变量减1),然后在将改变的变量值交给表达式使用
后置变量则是在表达式使用后再改变变量的值
要特别注意自增自减操作符的操作元只能是变量,不能是常数或表达式,且该变量值必须为整数型,例如:++1、(num+2)++都是不合法的
数字常量
Linux Shell脚本或命令默认将数字以十进制的方式进行处理,如果要使用其他进制的方式进行处理,则需对这个数字进行特定的标记或加前缀。
当使用0作为前缀时表示八进制
当使用0x进行标记时表示十六进制
同时还可使演示用num#这种形式进行标记进制数

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29519108/viewspace-1967022/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 变量和引用 Linux
请登录后发表评论 登录
全部评论

注册时间:2014-03-04

  • 博文量
    304
  • 访问量
    427218