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<
shell脚本返回执行结果-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 显⽰脚本执⾏的过程
作者:唐胜伟
出处:
本⽂版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在⽂章页⾯明显位置给出原⽂连接。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论