1.SHELL脚本的创建过程
SHELL脚本就是放在一个文件中的一系列Llinux命令和实用程序。
SHELL脚本固定格式如下:
#!/bin/bash
#注释
命令
...
#!用来解释脚本文件,#开头为注释,如果一行未完,可以在行尾加上“\”字符,表示与下一行合并为一行。
2.SHELL中的特殊字符
1.通配符
通配符主要用于模式匹配,例如文件名匹配、字符串查找等。常用如下:
星号(*),匹配0个或多个字符。
问号(?),匹配任意单字符。
方括号([]),匹配方括号中限定的任意一个字符
感叹号(!),表示方括号列出的字符以外的其他字符。
2.引号
引号分为双引号、单引号和反引号,除美元符号($)、反引号(’)、和反斜线(\)仍保留其特殊功能外,其余字符均作为普通字符对待。
3.输入输出重定向符
输入重定向符“<”的作用是把命令的标准输入重新定向到指定文件;输出重定向符“>”的作用是把命令的标准输出重新定向到指定文件。
此外还有输出附加定向符“>>”,它的作用是将命令的输出附加到指定文件的后面,而不破坏文件原有的内容。
3.SHELL变量
SHELL是一种解释型语言,使用变量时不需要事先进行声明,对一个变量赋值,实际上就是定义了这个变量。
例如对STR赋值::
STR="Hello word" //注意等号两边不能有空格。
变量赋值之后,就可以使用美元符号($)对其进行引用如下:::
echo $STR
由于SHELL变量是没有类型的,所以用户在使用同一个变量,可以存放字符,也可以存放整数。
使用unset命令清楚已经定义的变量。
unset STR
为了使SHELL编程更为有效,系统还提供了一些特殊的变量,如下所示。
$0: 脚本名称
$#: 命令行参数的个数
$*: 所有的命令行参数
$[1-n]: 第1-n个命令行参数
$$: 当前进程的表示符
$!: 后台运行的最后一个进程的标示符
$?: 命令的退出状态,0表示没有错误
4.条件测试
test命令通常用来计算一个条件表达式的值,在条件语句和循环语句中经常被用来判断是否满足某些条件。格式如下:
test 条件
或
[条件] /使用方括号时,要注意在条件两边加上空格。
1.字符串测试
主要操作符如下:
=:两个字符串相等。
!=:两个字符串不等。
-z:字符串为空。
-n:字符串不为空。
2.数值测试
主要操作符如下:
-eq: 两个数相等
-ne:两个数不相等
-gt:第一个数大于第二个数
-lt:第一个数小于第二个数
-le:第一个数小于等于第二个数
-ge:第一个数大于等于第二个数
3.文件状态测试
文件测试主要用来测试文件的类型以及访问权限等,操作符包括如下:
-f:是否为普通文件
-d:是否为目录
-c:是否为字符设备文件
-b:是否为块设备文件
-s:文件大小是否为零
-r:用户对文件是否有读权限
-w:用户对文件是否有写权限
-x:用户对文件是否有执行权限
4.逻辑操作
逻辑操作包括如下:
-a: 逻辑与
-o: 逻辑或
!: 逻辑非
5.控制结构
1.if语句
if语句用来实现条件分支结构,它的一般格式如下:
if 条件1
then
命令1
elif 条件2
then
命令2
else
命令3
fi if语句以它的反写fi结尾
2.case语句
格式如下:
case 字符串 in
模式1)
命令1
;;
模式2)
命令2
;;
...
*)
命令n
;;
esac ///结尾也是反case
3.for循环
使用for循环,中的变量名来遍历列表中的所有取值,当变量值在列表中时,即执行一次所有命令。
for循环的一般格式如下:
for 变量名 in[列表]
do
命令 1
命令 2
...
done
4.while循环
while循环的一般格式如下:
while 条件
do
命令1
命令2
。。。
done
5.until循环
一般格式如下: //与while 区别不成立时执行do语句
until 条件
do
命令 1
命令 2
...
done
6.break语句
break语句用来跳出循环过程,如果用在多层循环之中,可以指定跳出的循环个数,如果在两层循环中,使用break 2刚好跳出整个循环。
7.continue语句
continue语句用来跳过循环中后面的语句,直接开始下一次循环。
6.SHELL函数
与很多高级语言一样,SHELL中也允许定义函数
格式如下:
[function] 函数名()
{
命令
}