-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy path13_Learn_Shell_Script
More file actions
82 lines (64 loc) · 3.66 KB
/
13_Learn_Shell_Script
File metadata and controls
82 lines (64 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
## shell script执行的几种方式与其区别
shell脚本的执行方式可以用
1) bash script.sh (等同于sh script.sh)
2) . script.sh
3) source script.sh
这3种方式执行
1. 如果是使用bash来执行,那么在执行时,系统是会将其放在一个子进程中进行的。所以脚本中的变量等内容并不会在父进程中保留,当脚本结束后,这些变量就会被系统回收
2. 如果是使用source来执行,那么系统会把该脚本放在当前的进程中来执行,所以其中的变量也会得以保留
3. 如果是使用小数点.的方式执行,那么结果和使用source一样
------------------------------------------------------------------------------
## 使用test命令对文件、属性、字符(串)进行检查
可用选项:
测试的标志 | 代表意义
------------|-----------------------------------------------------------------------
-e | 该文件名是否存在
-f | 该文件名是否存在且为文件
-d | 该文件名是否存在且为目录
-b | 该文件名是否存在且为一个block device设备
-c | 该文件名是否存在且为一个character device设备
-S | 该文件名是否存在且为一个Socket设备
-p | 该文件名是否存在且为一个FIFO文件
-L | 该文件名是否存在且为一个连接文件
-r | 检测该文件名是否存在且具有可读权限
-w | 检测该文件名是否存在且具有可写权限
-x | 检测该文件名是否存在且具有可执行权限
-u | 检测该文件名是否存在且具有SUID权限
-g | 检测该文件名是否存在且具有SGID权限
-k | 检测该文件名是否存在具具有Sticky bit权限
-s | 检测该文件名是否存在具为非空白文件
-nt | newer than 判断file1是否比file2新
-ot | older than 判断file1是否比file2旧
-ef | 判断file1与file2是否为同一文件,可用在判断的hard link的判断上。判断两个文件是否为同一个node
-eq | 两数值相等
-ne | 两数值不等
-gt | n1 > n2
-lt | n1 < n2
-ge | n1 >= n2
-le | n2 <= n2
Test -z string | 判定字符串是否为0,如果是空,则为true
Test -n string | 判定字符串是否非0,如果为空,则为false。-n可省略
test str1 = str2 | 判断str1是否等于str2,如果相等,则返回true
test str1 != str2 | 判断str1是否不等于str2,如果相等,返回false
-a | 两个条件同时成立
-o | 任何一个条件成立
! | 逻辑非
------------------------------------------------------------------------------
## 使用判断符号[]
应注意的是,
1)[]内的每个因子两端都要有空格,否则有可能会出错
2)中括号内的每个变量,应用双引号
3)中括号内的每个常量,也应该使用双引号
------------------------------------------------------------------------------
## 在bash script中使用参数
在执行bash脚本时,可在文件名后面接参数。这些参数按顺序可以使用:
$0 $1 $2 ...等方式来获取,其中$0表示执行的脚本文件名
$# 表示参数个数
$@ 表示"$1" "$2" "$3" "$4"的意思,每个变量是独立的,用双引号括起来
$* 表示"$1c$2c$3c$4",其中c为分隔符,默认为空格
------------------------------------------------------------------------------
## 13.6 shell script的追踪与调试
sh [-nvx] scripts.sh
-n 不执行scripts.sh,仅查询语法问题
-v 在执行scripts.sh之前,先将它的内容输出到屏幕
-x 将使用到的script内容显示到屏幕上