预定义变量:

 预定义变量是由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脚本执行过程

-n  只检查语法
-v 显示执行的详细信息
-x  显示脚本执行的过程
 

作者:唐胜伟
出处:http://www.cnblogs.com/tangshengwei/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

shell常用测试命令的更多相关文章

  1. bash shell中测试命令

    bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径.如果test命令中列出的条件成立,test命令就会退出并返回退出状态吗0 .这样if-than语句就与其他编程 ...

  2. shell script测试命令(test)

    shell script测试命令(test) test命令 检查系统上面某些文件或者相关的属性 常用选项 test -e :检查该文件名是否存在 例:检查/dmtsai是否存在 [root@local ...

  3. 【shell 大系】Linux Shell常用技巧

    在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...

  4. Linux系统重要快捷键& Shell 常用通配符

    [Tab]:使用Tab键来进行命令补全: [Ctrl+c]:强行终止当前程序: [Ctrl+d]:键盘输入结束或退出终端: [Ctrl+s]:暂定当前程序,暂停后按下任意键恢复运行: [Ctrl+z] ...

  5. shell 常用正则

    shell常用正则表达式   “^\d+$” //非负整数(正整数 + 0)   “^[0-9]*[1-9][0-9]*$” //正整数   “^((-\d+)|(0+))$” //非正整数(负整数 ...

  6. Hbase Shell常用命令

    hbase shell常用的操作命令有create,describe,disable,drop,list,scan,put,get,delete,deleteall,count,status等,通过h ...

  7. (转)Hbase shell 常用命令(1)

    Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...

  8. hbase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  9. Linux Shell常用技巧(目录)

    Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件: /dev ...

随机推荐

  1. Django 前后台的数据传递示列

    Django 前后台的数据传递的方法 Django 从后台往前台传递数据时有多种方法可以实现. 最简单的后台是这样的: ? 1 2 3 4 from django.shortcuts import r ...

  2. js中字符串与数组的相互转换

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. spring项目加载不出来静态资源

    方法1: 拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml) <!-- 添加注解驱动 --> <mvc:annotation-driven/> <!- ...

  4. python虚拟环境的搭建命令mkvirtualenv

    windows环境如果同时安装了python3和python2,那么无论在哪个版本安装了virtualenv和virtualenvwrapper-win 通过以下命令设置ptyhon版本路径,即可建立 ...

  5. Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析

    Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析 2018年04月03日 13:51:55 阅读数:936   XEN 与 VMware ESXi,Hyper-V 以及 K ...

  6. Tomcat 环境安装

    本文以Tmcat 7版本在Windows Server 2012 64位系统下安装讲解,JAVA环境安装配置参见:http://www.cnblogs.com/fklin/p/6670760.html ...

  7. 《Drools7.0.0.Final规则引擎教程》第4章 4.9 关键字

    关键字 从Drools 5开始引入了硬关键字和软关键字.硬关键字是保留关键字,在命名demo对象,属性,方法,函数和规则文本中使用的其他元素时,不能使用任何硬关键字.以下是必须避免的硬关键字: (1) ...

  8. Git详解之九 Git内部原理

    以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ...

  9. cocos2d-x 发布win32 release版本后找不到msvcr110.dll

    解决方法: 安装Visual C++ Redistributable for Visual Studio 2012 //下载地址 http://www.microsoft.com/zh-CN/down ...

  10. 51Nod 1439:互质对(用莫比乌斯来容斥)

    有n个数字,a11,a22,…,ann.有一个集合,刚开始集合为空.然后有一种操作每次向集合中加入一个数字或者删除一个数字.每次操作给出一个下标x(1 ≤ x ≤ n),如果axx已经在集合中,那么就 ...