Shell脚本中的 测试开关 和 特殊参数
1. 测试开关
Shell中自带的一些测试指令, 下表列出这些测试指令的含义以及是否可用于 test命令, bash, ksh.
|
开关 |
test |
bash |
ksh |
定义 |
| -a FILE | 支持 | 支持 | 只是文件存在 | |
| -b FILE | 支持 | 支持 | 支持 | 文件存在, 并且是一个类似于 /dev 下的磁盘设备之类的块文件 |
| -c FILE | 支持 | 支持 | 支持 | 文件存在, 并且是一个类似于 /dev 下的TTY设备之类的字符文件 |
| -d FILE | 支持 | 支持 | 支持 | 文件存在, 并且是一个标准目录 |
| -e FILE | 支持 | 支持 | 支持 | 只是文件存在 |
| -f FILE | 支持 | 支持 | 支持 | 文件存在, 并且是一个类似于平面文件的标准文件 |
| -g FILE | 支持 | 支持 | 支持 | 文件存在, 并且是一个set-group-ID. 这是指对文件可执行性的用户有效组进行改变的文件许可 |
| -G FILE | 支持 | 支持 | 支持 | 文件存在, 并且它的组所有权是用户的有效组ID |
| -h FILE | 支持 | 支持 | 支持 | 文件存在, 并且它是一个符号链接. 和 -L 一样 |
| -k FILE | 支持 | 支持 | 支持 | 文件存在, 并且它粘着位设置. 这意味着只有文件的所有者或者目录的所有者可以删除文件 |
| -l STRING | 支持 | 和类似于 /usr/bin/test -l string -gt 5 && echo 的数字值, 比较 STRING 长度 | ||
| -L FILE | 支持 | 支持 | 支持 | 文件存在, 并且它是一个符号链接. 和 -h 一样 |
| -n STRING | 支持 | 支持 | 支持 | STRING 的长度非零 |
| -N FILE | 支持 | 支持 | 文件存在, 但是自从最近一次读入之后, 已经被修改 | |
| -o OPTION | 支持 | 支持 | 支持 | 如果 shell 的 OPTION 被打开, 返回真, 例如 set -x |
| -O FILE | 支持 | 支持 | 支持 | 文件存在, 并且它的所有者由有效的用户ID决定 |
| -p FILE | 支持 | 支持 | 支持 | 文件存在, 并且它是一个命名管道 (or FIFO) |
| -r FILE | 支持 | 支持 | 支持 | 文件存在, 并且可读 |
| -s FILE | 支持 | 支持 | 支持 | 文件存在, 并且它的大小大于 0 字节 |
| -S FILE | 支持 | 支持 | 支持 | 文件存在, 并且它是一个 socket |
| -t [FD] | 支持 | 支持 | 支持 | 在一个终端打开 FD(文件描述符), 默认是 stdout |
| -u FILE | 支持 | 支持 | 支持 | 文件存在, 并且 set-user-ID 被设置 |
| -w FILE | 支持 | 支持 | 支持 | 文件存在, 并且可写 |
| -x FILE | 支持 | 支持 | 支持 | 文件存在, 并且可执行 |
| -z STRING | 支持 | 支持 | 支持 | STRING 的长度为 0 |
2. 特殊参数
shell中的特殊参数是shell的内部变量, 要用 前缀$ 来使用.
比如 echo $? 就是获取 shell内部变量 "?" 的值.
内容变量一览:
|
参数 |
定义 |
| * | 从 1 开始, 完成所有位置变量列表. 如果被双引号引上, 成为有 IFS (内部文件分隔符)值的第一个字符分割的单词 |
| @ | 从 1 开始, 完成所有位置变量列表. 如果被双引号引上, 将每一个位置参数变成单个词 |
| # | 以十进制表示的位置参数数目 |
| ? | 最后或者最近一个前台任务的返回码. 如果任务被一个信号杀掉, 返回值为 128 加上信号的值. 例如: 标准kill信号值是 15, 那么返回值就是 143 |
| - | 所有发送给 shell 的标志, 或者 set 命令提供的标志 |
| $ | shell 进程ID. 如果在子shell中, 它被扩展为当前shell的值, 而不是子shell的值 |
| ! | 最近被放到后台执行的命令的进程ID |
| _ | 扩展为前一个命令的最后一个参数 |
| 0 | 扩展为shell或者shell脚本的名字 |
| 1…9 | 提供给shell, 函数或者脚本的位置参数. 比 9 大的值可以用 ${number} 来访问 |
Shell脚本中的 测试开关 和 特殊参数的更多相关文章
- shell脚本中文件测试
shell脚本中文件测试 author:headsen chen 2017-10-17 14:35:19 个人原创,转载请注明作者,否则 依法追究法律责任 [ -f filename ] ...
- shell脚本中的整数测试
shell脚本中的整数测试 author:headsen chen 2017-10-17 13:58:12 个人原创,转载请注明作者,出处,否则依法追究法律责任 1,test用法:tes ...
- linux,shell脚本中获取脚本的名字,使用脚本的名字。
需求描述: 写shell脚本的过程中,有时会需要获取脚本的名字,比如,有的时候,脚本 中会有usage()这种函数,可能就会用到脚本的名字. 实现方法: shell脚本中,通过使用$0就可以获取到脚本 ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- (转)shell脚本之文件测试操作符及整数比较符
shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一 ...
- shell脚本中case的用法
shell脚本中case选择语句可以结合read指令实现比较好的交互应答操作,case接收到read指令传入的一个或多个参数,然后case根据参数做选择操作. case的语法如下 case $char ...
- Shell脚本的条件测试与比较
Shell脚本的条件测试与比较 一.shell脚本的条件测试 通常,在bash的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结构执行不同的操作,有时也会与if等条件语句相结合,来完成测试 ...
- shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断
7月12日任务 20.5 shell脚本中的逻辑判断20.6 文件目录属性判断20.7 if特殊用法20.8/20.9 case判断 20.5 shell脚本中的逻辑判断 逻辑判断在shell中随处可 ...
- Shell脚本中的while getopts用法小结
getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数.getopts被Shell程序用来分析位置参数,option包含需要被识别的选项字符,如果这里的字符后 ...
随机推荐
- python布尔类型和逻辑运算
布尔类型 python中True表示真,False表示假,它们是布尔类型: >>> type(True) <class 'bool'> 在python中,bool的Tru ...
- 基于SpringMVC+Spring+MyBatis实现秒杀系统【客户端交互】
前言 该篇主要实现客户端和服务的交互.在第一篇概况里我已经贴出了业务场景的交互图片. 客户端交互主要放在seckill.js里来实现.页面展现基于jsp+jstl来实现. 准备工作 1.配置web.x ...
- spark之java程序开发
spark之java程序开发 1.Spark中的Java开发的缘由: Spark自身是使用Scala程序开发的,Scala语言是同时具备函数式编程和指令式编程的一种混血语言,而Spark源码是基于Sc ...
- 基础篇:1.JavaScript运行在html中,引用有几种方式?—— 6.js中常用的输出方式?
书接上文,上文提到若干条JavaScript的基础性知识,大部分都是一些概念性的东西,本着认真严谨的态度,我们要认真对待,有些条目的问题是某个知识点的周边延伸,为节约篇幅,就一起整理了,如有描述不对的 ...
- Python图像处理之验证码识别
在上一篇博客Python图像处理之图片文字识别(OCR)中我们介绍了在Python中如何利用Tesseract软件来识别图片中的英文与中文,本文将具体介绍如何在Python中利用Tesseract ...
- 【转载】 IIS服务器防盗链设置
在实际运行的服务器环境中,我们自己网站中的资源一般不希望被外部网站引用,被外部网站引用IIS网站中的资源文件,一是会加重了服务器的负担,二是占用了你自己服务器的外网带宽资源,因此我们希望防止盗链这种情 ...
- MEF 基础简介 二
MEF的导出(Export)和导入(Import) using System; using System.Collections.Generic; using System.Linq; using S ...
- Linux配置2个或多个Tomcat同时运行
一.问题说明今天操作Linux部署项目的时候,公司领导要求,只给一个服务器,但是有2个项目要部署,而且需要独立分开运行. 二.解决方法Linux配置两个或多个Tomcat,一个Tomcat对应部署一个 ...
- .Net C# 使用Redis
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...
- Java高并发 -- J.U.C.组件扩展
Java高并发 -- J.U.C.组件扩展 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 FutureTask Future模式,核心思想是异步调用.和同步调用的区别 ...