Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2793170
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: LINUX

2013-02-21 20:08:21

二、条件:

条件表达式用于 [[ 复合命令以及内建命令 test 和 [ 中,用来测试文件属性,进行字符串和算术比较。


基本格式:
test expression

expression为test命令构造的表达式。
这里expression是test命令可以理解的任何有效表达式,该简化格式将是读者可能会踫见的最常用格式
返回值:
test命令或者返回0(真) 或者返回1(假).

test可理解的表达式类型分为四类:

  •     表达式判断
  •     字符串比较
  •     数字比较
  •     文件比较


注意:在使用"["简写test时,左中括号后面的空格和右括号前面的空格是必需的,如果没有空格,Shell不可能辨别表达式何时开始何时结束.

也就是说

    test option file

可以全部改写成:

    [ option file ]

例如:

 test –w File
 
改写成    

[ –w File ]    

【示例】

//判断第一个参数是否为空字符串,不空则打印
if test -n "$1"
then
echo "$1"
fi

测试,放到文件当中
#!/bin/sh

if test -n "$1"
then
echo "$1"
fi

执行
chmod +x test.sh
./test.sh




对于我们写程序来说,无论选择结构和循环结构都离不开条件。

C语言的条件主要由运算符组成的各类表达式组成,条件的组成非常灵活。

shell的条件一般分为三类。其中的文件状态条件都是系统设置好的,只有记住才能够利用好。

 

2.1.文件状态的条件

 1. file1 -ef file2  file1file2有相同的设备和相同节点号。

 2. file1 -nt file2 file1file2修改时间更晚。

 3.file1 -ot file2 file1file2修改时间更早

 4. -b file1   file1存在并且是块设备

 5. -c file1   file1存在并且是字符设备

 6. -d file1   file1存在并且是目录

 7. -e file1   file1存在

 8. -f file1   file1存在并且是普通文件

 9. -g file1   file1存在并且有组ID

 10. -h file1  file1存在并且是软链接文件

    -L file1

 11. -G file1  file1存在并且拥有者所在的组也存在

 12. -k file1  file1存在并且粘滞位已设置

 13. -O file1  file1存在并且拥有者也存在

 14. -p file1  file1存在并且是管道文件

 15. -s file1  file1存在并且是非空文件

 16. -S file1  file1存在并且是进程

 17. -t file1

 18. -u file1  file1存在并拥有者的ID位已设置。

 19. -w file1  file1存在并可写

 20. -x file1  file1存在并可执行

 

2.2.字符串的条件

  C语言中字符串的比较是通过strcmp(str1,str2) 用函数实现字符串比较

  Shell则比较简单:

  1. -z string:字符串为空串时返回真

  2. -n string:      不为空串

  3. str1 = str2   相等

  4. str1 != str2:   不相等时返回真

  5. str1

  6. str1>str2:                            

2.3.有关数值的条件

  C语言中数值比较,是通过算术运算符(> < =等)实现,而shell利用了一些单词缩写实现。

int1 -eq int2   等于

     -ne        不等于

     -lt        小于

     -le        小于等于

     -gt        大于

     -ge        大于等于

 

2.4、复杂逻辑判断

-a         与
-o        或
!        非

阅读(644) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~