shell 编程主要有两种形式,第一种是直接以交互式的方式输入命令,第二种是将shall命令写成一个文档,就是shall脚本,然后执行该脚本。
Shall 脚本一般以 #!/bin/sh 开始, #! 表示其后面的程序执行脚本。
可以使用
chmod +x scriptname
将脚本设置为可执行程序。
否则如果要执行脚本则需要以下命令:
$ /bin/sh scriptname
比较操作是程序设计语言的基本能力。在shall中,执行比较操作的命令是 test 和 [ , 使用 [ 时需要注意和 ] 配对,目的是为了提高程序的可读性。
例如测试一个文档是否存在的语句如下:
if test -f fred.c
then ….
fi
或者
if [ -f fred.c ]
then …
fi
test 命令可以使用的调教类型分为三类:字符串比较、算术比较和文件相关操作。
(1)字符串比较
string1 = string2 两字符串相同则结果为真
string1 != string2 两字符串不同则结果为真
-n string 字符串不为空则结果为真
-z string 字符串为空则结果为真
(2)算术比较
expression1 -eq expression2 两个表达式相等则结果为真
expression1 -ne expression2 两个表达式不相等则结果为真
expression1 -gt expression2 表示式1大于表达式2则结果为真
expression1 -ge expression2 表达式1 大于等于表达式2则结果为真
expression1 -lt expression2 表达式1小于表达式2 则结果为真
expression1 -le expression2 表达式1小于等于表达式2 则结果为真
! expression 如果表达式为假则结果为真
(3)文件相关操作
-d file 如果文件是一个目录则结果为真
-e file 如果文件存在则结果为真,历史上-e选项不可移植,所以通常使用-f选项。
-f file 如果文件是一个普通文件则结果为真
-g file 如果文件的set-group-id位被设置则结果为真
-r file 如果文件可读则结果为真
-s file 如果文件大小不为零则结果为真
-u file 如果文件的set-user-id位被设置为真则结果为真
-w file 如果文件可写则结果为真
-x file 如果文件可执行则结果为真