shell条件判断之test命令实例详解
来源:互联网 发布:易安卓播放器源码 编辑:程序博客网 时间:2024/04/30 07:07
基本格式:
test expression
expression为test命令构造的表达式。
这里expression是test命令可以理解的任何有效表达式,该简化格式将是读者可能会踫见的最常用格式
返回值:
test命令或者返回0(真) 或者返回1(假).
test可理解的表达式类型分为四类:
- 表达式判断
- 字符串比较
- 数字比较
- 文件比较
1)判断表达式
if test (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式 2 两个表达式都为真
test 表达式1 –o 表达式2 两个表达式有一个为真
2)判断字符串
test –n 字符串 字符串的长度非零
test –z 字符串 字符串的长度为零
test 字符串1=字符串 2 字符串相等
test 字符串1 !=字符串2 字符串不等
3)判断整数
test 整数1 –eq 整数2 整数相等
test 整数 1 –ge 整数2 整数1大于等于整数2
test 整数1 –gt 整数 2 整数1大于整数2
test 整数1 –le 整数 2 整数1小于等于整数2
test 整数1 –lt 整数 2 整数1小于整数2
test 整数1 –ne 整数 2 整数1不等于整数2
4)判断文件
test File1 –ef File2 两个文件具有同样的设备号和i结点号
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 旧
test –b File 文件存在并且是块设备文件
test –c File 文件存在并且是字符设备文件
test –d File 文件存在并且是目录
test –e File 文件存在
test –f File 文件存在并且是正规文件
test –g File 文件存在并且是设置了组ID
test –G File 文件存在并且属于有效组ID
test –h File 文件存在并且是一个符号链接(同-L)
test –k File 文件存在并且设置了sticky位
test –b File 文件存在并且是块设备文件
test –L File 文件存在并且是一个符号链接(同-h)
test –o File 文件存在并且属于有效用户ID
test –p File 文件存在并且是一个命名管道
test –r File 文件存在并且可读
test –s File 文件存在并且是一个套接字
test –t FD 文件描述符是在一个终端打开的
test –u File 文件存在并且设置了它的set-user-id位
test –w File 文件存在并且可写
test –x File 文件存在并且可执行
test xxx 可以简写成 [ xxx ] 的形式。
注意:在使用"["简写test时,左中括号后面的空格和右括号前面的空格是必需的,如果没有空格,Shell不可能辨别表达式何时开始何时结束。
也就是说
test option file
可以全部改写成:
[ option file ]
例如:
test –w File
改写成
[ –w File ]
【示例】
例1.比较两个数大小
#!/bin/bash# Program:# This program will show the use of test command# History:# 2015/1/5 Alex First releaseecho "Using $0 $1 $2 to compare the parameter $1 and $2 "#if test $1 -eq $2if [ $1 -eq $2 ] #equal to if test $1 -eq $2then echo "NO.1 = NO.2"elif test $1 -gt $2then echo "NO.1 > NO.2"else echo "NO.1 < NO.2"fiexit 0测试:deyuy/bin/my_shell >> test.sh 2 2Using test.sh 2 2 to compare the parameter 2 and 2NO.1 = NO.2deyuy/bin/my_shell >> test.sh 10 100Using test.sh 10 100 to compare the parameter 10 and 100NO.1 < NO.2注意:左中括号后面的空格和右括号前面的空格
#!/bin/bash# Program:# This program will show the use of test command# History:# 2015/1/5 Alex First releaseecho "Using $0 $1 to check a file's existence"#if test -e $1if [ -e $1 ] # equal to if test -e $1then echo "the file is exist!"else echo "the file is not exist!"fiexit 0测试:deyuy/bin/my_shell >> lsapp1 fun1.sh hello.sh test.sh test2.sh var.shdeyuy/bin/my_shell >> chmod u+x test2.shdeyuy/bin/my_shell >> test2.sh test.shUsing test2.sh test.sh to check a file's existencethe file is exist!deyuy/bin/my_shell >> test2.sh hhhhhhh.shUsing test2.sh hhhhhhh.sh to check a file's existencethe file is not exist!注意:左中括号后面的空格和右括号前面的空格
- shell条件判断之test命令实例详解
- shell条件判断之if实例详解
- shell之test命令运算符详解
- shell test命令详解
- shell之条件判断
- 【shell命令】test判断整数
- shell 之 test 命令
- shell 之 test 命令
- shell之test 命令
- linux [] 与 test 命令 进行 条件判断
- shell脚本命令test详解
- Shell编程之判断条件
- shell 脚本之条件判断
- shell编程之条件判断
- Shell编程之条件判断
- Shell编程之 “test”命令
- shell-字符处理命令/条件判断
- shell命令if判断条件简单记载
- 山东省第一届ACM大学生程序设计竞赛(原题) 回顾 4.18
- OC中简单内存开辟 初始化
- 第八周【项目1-实现复数类中的运算符重载】
- 疯狂JAVA之学习笔记(5)----------注释
- 基于protobuf的RPC实现
- shell条件判断之test命令实例详解
- 树分治(hdu5016-2014西安现场赛)
- UITableView---初始化
- 深入剖析jsp的工作原理
- SQL with as 的用法 以及递归函数的写法
- 神经网络与机器学习导言笔记——网络结构与知识表示
- 清除float常用方法(:after和clear:both)
- Unity3D修改脚本模板
- String,StringBuilder,String Buffer的一点小结