shell脚本编程-脚本语法-条件测试
来源:互联网 发布:瓦尔登湖 知乎 编辑:程序博客网 时间:2024/06/05 02:09
条件测试
命令test或[ 可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。例如测试两个数的大小关系:
~$ var=2~$ test $var -gt 1~$ echo $?0~$ test $var -gt 3~$ echo $?1~$ [ $var -gt 3 ]~$ echo $?1
虽然看起来很奇怪,但左方括号 [ 确实是一个命令的名字,传给命令的各参数之间应该用空格隔开,比如:$VAR、-gt、3、] 是[ 命令的四个参数,它们之间必须用空格隔开。命令test或[ 的参数形式是相同的,只不过test命令不需要] 参数。以[ 命令为例,常见的测试命令如下表所示:
[ -d DIR ] 如果DIR存在并且是一个目录则为真[ -f FILE ] 如果FILE存在且是一个普通文件则为真[ -z STRING ] 如果STRING的长度为零则为真[ -n STRING ] 如果STRING的长度非零则为真[ STRING1 = STRING2 ] 如果两个字符串相同则为真[ STRING1 != STRING2 ] 如果字符串不相同则为真[ ARG1 OP ARG2 ] ARG1和ARG2应该是整数或者取值为整数的变量,OP是-eq(等于)-ne(不等于)-lt(小于)
-le(小于等于)-gt(大于)-ge(大于等于)之中的一个
和C语言类似,测试条件之间还可以做与、或、非逻辑运算:
[ ! EXPR ] EXPR可以是上表中的任意一种测试条件,!表示“逻辑反(非)”[ EXPR1 -a EXPR2 ] EXPR1和EXPR2可以是上表中的任意一种测试条件,-a表示“逻辑与”[ EXPR1 -o EXPR2 ] EXPR1和EXPR2可以是上表中的任意一种测试条件,-o表示“逻辑或”
例如
$ VAR=abc$ [ -d Desktop -a $VAR = 'abc' ]$ echo $?0
注意,如果上例中的$VAR变量事先没有定义,则被Shell展开为空字符串,会造成测试条件的语法错误(展开为[ -d Desktop -a = ‘abc’ ]),作为一种好的Shell编程习惯,应该总是把变量取值放在双引号之中(展开为[ -dDesktop -a “” = ‘abc’ ]):
$ unset VAR$ [ -d Desktop -a $VAR = 'abc' ]bash: [: too many arguments$ [ -d Desktop -a "$VAR" = 'abc' ]$ echo $?1
阅读全文
1 0
- shell脚本编程-脚本语法-条件测试
- Shell脚本语法 条件测试:test
- shell脚本编程语法
- shell脚本及条件测试
- shell脚本之条件测试
- Shell脚本的条件测试
- Shell编程之 脚本语法
- shell 脚本之条件测试用法
- shell脚本之条件测试与判断
- shell 脚本编程之条件语句
- Linux shell脚本编程语法基础
- linux shell 脚本编程基本语法
- Shell脚本条件相关
- shell脚本--条件
- shell脚本条件判断
- shell脚本条件判断
- shell脚本条件判断
- shell脚本条件判断
- Redux 学习纪要
- HDU5818 Joint Stacks
- 【树状数组--求逆序数】poj2481 Cows
- gradle的使用
- Java创建线程的两个方法
- shell脚本编程-脚本语法-条件测试
- 栈与队列(2)
- 新手个人的玩家移动,视角等控制(不定期完善)
- Xcode8 打包上传AppStore无法构建版本
- 去掉wordpress功能中的登录,文章,评论,.org链接
- JAVA 8 新时间 API java.time 使用简介
- Android初学者Eclispe环境启动遇This Android SDK requires Android Developer Toolkit version 23.0.0 or above
- 黑马商城项目(四)
- php $_SERVER