首页 > 代码库 > 【Linux】鸟哥的Linux私房菜基础学习篇整理(七)

【Linux】鸟哥的Linux私房菜基础学习篇整理(七)

1. test命令的测试功能。
测试的标志:
(1)关于文件类型的检测 test [-efdbcSpL] filename
-e:该文件名是否存在;
-f:该文件名是否为文件;
-d:该文件名是否为目录;
-b:该文件名是否存在且为一个block device设备;
-c:该文件名是否存在且为一个character device设备;
-S:该文件名是否存在且为一个Socket文件;
-p:该文件名是否存在且为一个FIFO文件;
-L:该文件名是否存在且为一个连接文件。
(2)关于文件权限的检测 test [-r] filename
-r:检测该文件名是否存在且具有可读属性;
-w:检测该文件名是否存在且具有可写属性;
-x:检测该文件名是否存在且具有可执行属性;
-u:检测该文件名是否存在且具有SUID属性;
-g:检测该文件名是否存在且具有SGID属性;
-k:检测该文件名是否存在且具有Sticky bit属性;
-s:检测该文件名是否存在且为非空白文件。
(3)两个文件之间的比较,如test file1 -nt file2
-nt:newer than 判断file1是否比file2新;
-ot:older than 判断file1是否比file2旧;
-ef:判断file1与file2是否为同一文件名,可用在判断hard link的判定上,主要判定是否指向同一个inode。
(4)两个整数之间的比较,如test n1 -eq n2
-eq:相等;
-ne:不相等;
-gt:n1大于n2;
-lt:n1小于n2;
-ge:n1大于或等于n2;
-le:n1小于或等于n2。
(5)判定字符串
test -z string:判定字符串是否为空;
test -n string:判定字符串是否为非空;
test str1 = str2:判定str1是否等于str2;
test str1 != str2:判定str1是否不等于str2。
(6)多重条件判定
-a:两个条件同时成立,如test -r file -a -x file,若判断file是否同时具有可读与可执行属性;
-o:任何一个条件成立,如test -r file -o -x file,若判断file是否具有可读或可执行属性;
!:反向状态,如test ! -x file,判断file是否不具备可执行属性。

2. 利用判断符号[]。
[]可以代替test,需要注意中括号的两端需要有空格符来分隔。如,[ -z "$HOME" ],判断HOME变量是否为空。

3. shell script的默认变量。
$0:执行的脚本文件名;
$1,$2,$3...:第n个参数;
$#:后面接的参数的个数;
$@:代表全部的参数,每个变量都是独立的,以空格分隔,使用引号括起来;
$*:代表"$1c$2c$3",c代表分隔符,默认为空格。

4. sh [-nvx] script.sh:shell script的追踪与调试。
参数:
-n:不要执行script,仅检查语法问题;
-v:在执行script前,先将script的内容输出到屏幕上;
-x:将使用到的script内容显示到屏幕上。