From《鸟哥的Linux私房菜——基础学习篇》Part-13
helloworld.sh
1 |
|
Exec Shell Script
1 | # 当子进程执行完成后,子进程内的各变量或操作将结束,而不会传回给父进程 |
read.sh
1 |
|
create3files.sh
1 |
|
sum.sh
1 |
|
Command test
1 |
|
文件类型判断
Command | Desc |
---|---|
test -e filename |
判断filename是否存在 |
test -f filename |
判断filename是否存在 且 是文件 |
test -d filename |
判断filename是否存在 且 是目录 |
test -b filename |
判断filename是否存在 且 是block device |
test -c filename |
判断filename是否存在 且 是character device |
test -S filename |
判断filename是否存在 且 是Socket |
test -p filename |
判断filename是否存在 且 是FIFO(pipe) |
test -L filename |
判断filename是否存在 且 是Link |
#### 文件权限判断 | |
Command | Desc |
:–: | :– |
test -r filename |
判断filename是否存在 且 具有read权限 |
test -w filename |
判断filename是否存在 且 具有write权限 |
test -x filename |
判断filename是否存在 且 具有execute权限 |
test -u filename |
判断filename是否存在 且 具有set-user-id属性 |
test -g filename |
判断filename是否存在 且 具有set-group-id属性 |
test -k filename |
判断filename是否存在 且 具有sticky-bit属性 |
test -s filename |
判断filename是否存在 且 不是空白文件(size>0) |
#### 文件比较 | |
Command | Desc |
:–: | :– |
test file1 -nt file2 |
(newer than)判断file1是否比file2新 |
test file1 -ot file2 |
(older than)判断file1是否比file2旧 |
test file1 -ef file2 |
依据文件inode,判断file1和file2是否是同一个文件,可用于判断hard link |
#### 整数比较 | |
Command | Desc |
:–: | :– |
test num1 -eq num2 |
num1 == num2 (equal) |
test num1 -ne num2 |
num1 != num2 (not equal) |
test num1 -gt num2 |
num1 > num2 (greater than) |
test num1 -lt num2 |
num1 < num2 (less than) |
test num1 -ge num2 |
num1 >= num2 (greater than or equal) |
test num1 -le num2 |
num1 <= num2 (less than or equal) |
#### 字符串判断 | |
Command | Desc |
:–: | :– |
test -z str |
判断str是否为空(if str == nil {return true} return false) |
test -n str |
判断str是否为空(if str == nil {return false} return true) |
test str1 = str2 |
判断str1是否等于str2 |
test str1 != str2 |
判断str1是否不等于str2 |
#### 多重判断 | |
Command | Desc |
:–: | :– |
test -r file -a -x file |
(AND) 当file同时具有r和x权限时,返回true |
test -r file -o -x file |
(OR) 当file具有r或者x权限时,返回true |
test ! -x file |
(NOT) 当file不具有x权限时,返回true |
### readPlus.sh by [] |
|
[] 的用法与test 基本相同 |
|
使用[] 两侧必须加入空格,例[ $x == $y ] |
1 |
|
Shell Script Default Arguments $0,$1...
1 | # 执行脚本 |
echoArg.sh
1 |
|
1 | sh echoArg.sh theone haha quot |
shift.sh 变量偏移
1 |
|
1 | sh shift.sh one two three four five six |
if.sh
1 |
|
ifElse.sh
1 |
|
1 |
|
1 |
|
1 |
|
case.sh
1 |
|
1 |
|
function.sh
1 |
|
1 |
|
while.sh
1 |
|
1 |
|
until.sh
1 |
|
for.sh
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
SVN_post_commit.sh
1 |
|
Shell Script DEBUG
Command | Desc |
---|---|
sh -n xx.sh |
不运行,仅检查语法问题 |
sh -v xx.sh |
运行前,先将xx.sh的内容打印到屏幕 |
sh -x xx.sh |
将xx.sh的运行过程全部列出来(常用) |