if的条件表达式
常用的:
[ -a FILE ] 如果 FILE 存在则为真。
[ -d FILE ] 如果 FILE 存在且是一个目录则返回为真。
[ -e FILE ] 如果 指定的文件或目录存在时返回为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则返回为真。
[ -r FILE ] 如果 FILE 存在且是可读的则返回为真。
[ -w FILE ] 如果 FILE 存在且是可写的则返回为真。(一个目录为了它的内容被访问必然是可执行的)
[ -x FILE ] 如果 FILE 存在且是可执行的则返回为真。
| 条件表达式 | 意义 |
|---|---|
| 1.文件类检测,例如[ -e /tmp/a.log ]。如非特别说明,则所有文件类操作都会追踪到软链接的源文件。 | |
| -e file | 文件是否存在(exist) |
| -f file | 文件是否存在且为普通文件(file) |
| -d file | 文件是否存在且为目录(directory) |
| -b file | 文件是否存在且为块设备block device |
| -c file | 文件是否存在且为字符设备character device |
| -S file | 文件是否存在且为套接字文件Socket |
| -p file | 文件是否存在且为命名管道文件FIFO(pipe) |
| -L file | 文件是否存在且是一个链接文件(Link) |
| 2. 文件属性检测,如test -r /tmp/a.log。如非特别说明,则所有文件类操作都会追踪到软链接的源文件。 | |
| -r file | 文件是否存在且当前用户可读 |
| -w file | 文件是否存在且当前用户可写 |
| -x file | 文件是否存在且当前用户可执行 |
| -u file | 文件是否存在且设置了SUID |
| -g file | 文件是否存在且设置了SGID |
| -k file | 文件是否存在且设置了sbit(sticky bit) |
| -s file | 文件是否存在且大小大于0字节,即用于检测文件是否为非空白文件 |
| -N file | 文件是否存在,且自上次read后是否被modify |
| 3. 两个文件之间的比较,如:test file1 -nt file2 | |
| file1 -nt file2 | (newer than)判断file1是否比file2新 |
| file1 -ot file2 | (older than)判断file1是否比file2旧 |
| file1 -ef file2 | (equal file)判断file2与file2是否为同一文件,可用在判断hard link的判定上。主要意义在判定,两个文件是否均指向同一个分区上的同一个inode |
| 4. 两个整数之间的判定,支持正负数,但不支持小数。例如test n1 -eq n2 | |
| int1 -eq int2 | 两数值相等(equal) |
| int1 -ne int2 | 两数值不等(not equal) |
| int1 -gt int2 | n1大于n2(greater than) |
| int1 -lt int2 | n1小于n2(less than) |
| int1 -ge int2 | n1大于等于n2(greater than or equal) |
| int1 -le int2 | n1小于等于n2(less than or equal) |
| 5. 判定字符串 | |
| -z string | (zero)判定字符串是否为空?若string为空字符串,则为true |
| -n string | 判定字符串是否非空?若string为空字符串,则false。注:-n可省略 |
| string1 = string2 string1 == string2 | string1和string2是否相同。相同则返回true。"=="和"="等价,但"="可移植性更好 |
| str1 != str2 | str1是否不等于str2,若不等,则返回true |
| str1 > str2 | str1字母顺序是否大于str2,若大于,则返回true |
| str1 < str2 | str1字母顺序是否小于str2,若小于,则返回true |
| 6.逻辑运算符,例如:test -r filename -a -x filename | |
| -a或&& | (and)两表达式同时为true时才为true。"-a"只能在test或[]中使用,&&只能在[[]]中使用 |
| -o或|| | (or)两表达式任何一个true则为true。"-o"只能在test或[]中使用,||只能在[[]]中使用 |
| [ ! EXPR ] | 对表达式取反 |
| ( ) | 用于改变表达式的优先级,为了防止被shell解析,应该加上反斜线转义\(\) |
| [ ] || [ ] | 用OR来合并两个条件 |
| [ ] && [ ] | 用AND来合并两个条件 |
忘记参考的哪儿了,请见谅
if的条件表达式的更多相关文章
- [Django]模型提高部分--聚合(group by)和条件表达式+数据库函数
前言:本文以学习记录的形式发表出来,前段时间苦于照模型聚合中group by 找了很久,官方文章中没有很明确的说出group by,但在文档中有提到!!! 正文(最后编辑于2016-11-12): 聚 ...
- Scala:条件表达式的好处
条件表达式的好处之一是:让代码更简洁,例如在一个需要根据不同条件收集不同值的场景中,多数语言提供的代码如下: ; ) { tmp = xxx; } ) { tmp = yyy; } else { tm ...
- Shell 条件表达式汇总
条件表达式 文件表达式 if [ -f file ] 如果文件存在if [ -d ... ] 如果目录存在if [ -s file ] 如果文件存在且非空 if [ -r f ...
- shell之条件表达式
conditional expressions are used by the [[ compound command and the test and [ builtin commands. ari ...
- Python学习教程(learning Python)--3.3 分支语句的条件表达式详解
本节主要讨论分支语句的条件表达式问题. 在if或者if-else分支控制语句里由于都用到条件判断(表达式是真还是假),条件判断可以是一种关系运算也可以是布尔表达式. 本节将对if及if-else语句的 ...
- golang没有条件表达式?:
详见The Go Programming Language Specification中Expressions一章中未提及此表达式, 故其不支持. 再强调一次, GO不支持条件表达式 conditio ...
- thymeleaf条件表达式
条件表达式形式:condition, then and else <tr th:class="${row.even}? 'even' : 'odd'"> ... < ...
- SQL条件表达式
需求:数据表中如果满足某个条件,返回表中所有数据,否则不返回数据. 语法:CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句. CASE WHEN condition T ...
- c语言条件表达式误区1
#include <stdio.h> #include <stdlib.h> //综合1 和 2我们知道牢记条件表达式中常量写在左边的语法规则 以防因为疏忽造成难以查找的错误 ...
- 【C语言探索之旅】 第一部分第六课:条件表达式
内容简介 1.课程大纲 2.第一部分第六课:条件表达式 3.第一部分第七课预告:循环语句 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...
随机推荐
- shell 查看目前机器listen的所有端口
netstat -lnp 这条命令的意思是列出系统里面监听网络连接的端口号和相应的进程PID.参数说明:-t:表示列出TCP连接(也可以加上-u参数表示同时列出UDP网络连接)-l:表示列出正在网络监 ...
- eclipse juno 怎么安装maven
步骤如下: 1.下载maven的bin,在apache官方网站可以下载. 2.下载下来之后,解压,找个路径放进去, 把bin的位置设在环境变量里,新建环境变量MAVEN_HOME. 3.在PATH里加 ...
- Dubbo+Zookeeper的简单入门案例
1.1 Dubbo简介 Apache Dubbo是一款高性能的Java RPC框架.其前身是阿里巴巴公司开源的一个高性能.轻量级的开源Java RPC框架,可以和Spring框架无缝集成. 什么是R ...
- mysql下sql语句令某字段值等于原值加上一个字符串
MYSQL在一个字段值后面加字符串,如下: member 表名 card 字段名 update member SET card = '00' || card; (postgreSQL 用 || 来连贯 ...
- ICEM-tube-water
原视频下载地址:https://pan.baidu.com/s/1slPfJFv 密码: kjsh
- NIO Channel SocketChannel ServerSocketChannel
ServerSocketChannel: ServerSocketChannel是一个基于通道的socket监听器.它同我们所熟悉的java.net.ServerSocket执行相同的基本任务,不过它 ...
- BASE64使用场景
BASE64使用场景 Base64就是一种基于64个可打印字符来表示二进制数据的方法. Base64编码是从二进制到字符的过程. 在项目中,将报文进行压缩.加密后,最后一步必然是使用base64编码, ...
- Sharding-Jdbc 自定义分库分表-复合分片算法自定义实现
Sharding-JDBC中的分片策略有两个维度,分别是: 数据源分片策略(DatabaseShardingStrategy) 表分片策略(TableShardingStrategy) 其中,数据源分 ...
- SpringBoot使用jasypt加解密密码
在我们的服务中不可避免的需要使用到一些秘钥(数据库.redis等) 开发和测试环境还好,但生产如果采用明文配置讲会有安全问题,jasypt是一个通用的加解密库,我们可以使用它. <depende ...
- plupload如何限制上传文件数量,限制只能上传单个文件
1 完整代码 $(function() { $("#uploader").pluploadQueue({ runtimes : 'html5,gears,flash,silverl ...