shell常用测试命令
预定义变量:
预定义变量是由Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义比变量使用"$"符合和另一个符号组合表示。
$#:表示获取命令中位置参数的个数。
$*:表示获取所有位置参数的内容。
$?:表示前一条命令执行后的返回状态,返回值为0表示执行正确,任何非0值均表示出现异常。
$0:表示获取当前执行的脚本或程序的名称。
$n:表示获取执行shell脚本的第n个参数,n=1..9,如果大于9用大括号括起来${10}
$$:获取当前shell的进程号(pid) 示例:echo "$$" >m.pid
$!:执行上一个指令的PID,上一个后台运行进程的进程号
$_:在此之前的命令(上一个命令)或脚本的最后一个参数
预定义变量进阶:
$* : 将命令行所有参数视为单个字符串,等同于“$1$2$3”
$@ : 将命令行每个参数视为单独的字符串,等同于“$1” “$2” “$3”。这是将参数传递给其他程序的最佳方法,因为他会保留所有内嵌在每个参数里的任何空白;
文件测试:
-d测试是否为目录(Directory)。
-s file 文件大小非0时为真。
-e测试目录或文件是否存在(Exist)。
-f测试是否为文件(File)。
-r测试当前用户是否有权限读(Read)。
-w测试当前用户是否有权限写(Write)。
-x测试是否有执行权限(Excute)。
附:-d参数使用示例:#[ -d /tmp/ ]
#echo $? //查看前一条命令的返回值,0表示成立,tmp目录存在。
#[ -d /tmp/ ] && echo "YES" //如果tmp目录存在则在屏幕上打印YES。
整数值比较:
-eq第1个数等于(Equal)第2个
-ne第1个数不等于(Not Equal)第2个数
-gt第1个数大于(Greater Than)第2个数
-lt第1个数小于(Lesser Than)第2个数
-le第1个数小于或等于(Lesser or Equal)第2个数
-ge第1个数大于或等于(Greater or Equal)第2个数
附:-gt参数使用示例:#[ 6 -gt 5 ] && echo "Too many"
| 在 [] 中使用的比较符 | 在(()) , [[]]中使用的比较符 |
| -eq | == |
| -ne | != |
| -gt | > |
| -ge | >= |
| -lt | < |
| -le | <= |
字符串比较:
=第1个字符串与第2个字符串相同。
!=第1个字符串与第2个字符串不相同,其中“!”表示取反的意思。
-z检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串。
-n 检查值是否不为空。
逻辑测试:
与&&:逻辑与,表示“而且”的意思,只有当前后两个条件都成立时,整个测试命令的返回值才为0。使用Test命令测试时,“&&”可以改为“-a”。
或||:逻辑或,表示“或者”的意思,只要前后两个条件中有一个成立时,整个测试命令的返回值即为0(结果成立)。使用Test命令测试时,“||”可以改为“-o”。
非!:逻辑否,表示“不”的意思,只有当指定的条件不成立时,整个测试命令的返回值才为0(结果成立)。
[] 单中括号与双 [[]] 总结:
[] : 使用-a,-o,-eq,-gt,-ne类似的字母对比符使用单中括号;
[[]] :使用&&,||,>,=,<,测试符号;
[[ -f a.sh || -e b.sh ]]&&echo "0" || echo "1"
[ -f a.sh ] || [ -f b.sh ]
[ -f a.sh ] && [ -f b.sh ]
重要:如果括号中包含变量必须要用 “ ”括起来;
查看shell脚本执行过程

作者:唐胜伟
出处:http://www.cnblogs.com/tangshengwei/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
shell常用测试命令的更多相关文章
- bash shell中测试命令
bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径.如果test命令中列出的条件成立,test命令就会退出并返回退出状态吗0 .这样if-than语句就与其他编程 ...
- shell script测试命令(test)
shell script测试命令(test) test命令 检查系统上面某些文件或者相关的属性 常用选项 test -e :检查该文件名是否存在 例:检查/dmtsai是否存在 [root@local ...
- 【shell 大系】Linux Shell常用技巧
在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...
- Linux系统重要快捷键& Shell 常用通配符
[Tab]:使用Tab键来进行命令补全: [Ctrl+c]:强行终止当前程序: [Ctrl+d]:键盘输入结束或退出终端: [Ctrl+s]:暂定当前程序,暂停后按下任意键恢复运行: [Ctrl+z] ...
- shell 常用正则
shell常用正则表达式 “^\d+$” //非负整数(正整数 + 0) “^[0-9]*[1-9][0-9]*$” //正整数 “^((-\d+)|(0+))$” //非正整数(负整数 ...
- Hbase Shell常用命令
hbase shell常用的操作命令有create,describe,disable,drop,list,scan,put,get,delete,deleteall,count,status等,通过h ...
- (转)Hbase shell 常用命令(1)
Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...
- hbase基本概念和hbase shell常用命令用法
1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...
- Linux Shell常用技巧(目录)
Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件: /dev ...
随机推荐
- 015——数组(十五)sort natsort shuffle natcasesoft array_multisort
<?php /*数组排序函数 * sort natsort shuffle natcasesoft array_multisort */ //sort() 对数组元素进行递增的排序, /*$ar ...
- vue创建组件
vue创建组件是很容易的: js: Vue.component("component-item",{ //component-item就是我们在HTML页面上引用的组件,它会在 ...
- 利用Docker编译Hadoop 3.1.0
前言 为什么要使用Docker编译,请自行百度 操作系统环境:Centos 6.8 uname -r 内核版本:2.6.32-642.el6.x86_64 除非有把握否则不要在Centos6.8中直接 ...
- 3: 组件间的依赖管理 Managing Dependencies Between Components Using the Prism Library 5.0 for WPF(英汉对照版)
Applications based on the Prism Library are composite applications that potentially consist of many ...
- tooltip提示框组件
Tooltip 提示框组件 可独立于其他组件通过$.fn.tooltip.defaults重写默认的defaults.当用户移动鼠标指针在某个元素上时,出现提示信息窗口来显示额外信息.提示内容可以包含 ...
- LaTex中插入大括号的多行公式
由于近期要发表论文,不得不恶补LaTex.现在需要插入带大括号的多行公式,效果如下: LaTex编辑如下: \begin{equation} \label{eq6} [x_{i}]=\left\{ \ ...
- c# 实体处理工具类
using System; using System.Collections; using System.Collections.Generic; using System.ComponentMode ...
- 如何在 js 代码中使用 jsp 标签或 Java 代码
JSP 标签还是很方便的,比如 Struts.Spring 等提供给我们的 JSP 标签,可以用它们来获取变量或进行一些计算.比如 struts2 的 <s:url value="/a ...
- ss-libev 源码解析local篇(4): server_recv_cb之STAGE_STREAM
继续探索server_recv_cb,我们已经来到了STAGE_STREAM状态.如果在0.05秒的timer来之前客户端就有数据过来,server_recv_cb被调用,此时已经在stream状态就 ...
- 细说C语言的优先级和结合性
Table0. 为什么要掌握优先级1. 优先级1.1 优先级图表1.2 运算符实例1.3 优先级顺口溜2. 结合性3. 参考资料 写代码的时候,常会翻看的一个表就是“c语言运算符优先级表”.c的运算符 ...