1、shell结构:
1)#!指定执行脚本的shell
2)# 注释行
3)命令和控制语句
s
2、创建shell程序的步骤
1)创建一个包含命令和控制结构的文件
2)修改这个文件的权限使它可以执行。(chmod u+x my.shell)
3)执行:./my.shell或者使用:sh my.shell
3、变量:是shell传递数据的一种方法,用来代表每个取值的符号名
shell有两类变量:临时变量和永久变量
1)临时变量:是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量。
2)永久变量:是环境变量,其值不随shell脚本的执行结束而消失。
*用户自定义变量由字母或下划线开头,由字母、数字或下划线序列组成,并且大小写字母意义不同。变量名长度没有限制。在使用变量值时,要在变量名前加上前缀“$“
*设置和使用变量,习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头,不能用数字。
变量赋值:赋值号”=“两边没有空格。如NUM=1、将一个命令的执行结果赋给变量,如TIME=‘date’、将一个变量赋给另一个变量,如:A=$B、使用echo查看变量值,如:echo $A
3)列出所有变量:#set。注意包含多个字符的变量要用引号。取消变量:#unset NAME
4)位置变量:shell解释执行用户命令时,将命令行的第一个部分作为命令名,其他部分作为参数。由出现在命令行上的位置确定参数称为位置参数。如:
ls -l file1 file2 file3
$0 这个程序的文件名ls -l
$n 这个程序的第n个参数值,n=1-9
$* 这个程序的所有参数
$# 这个程序的参数个数
$$ 这个程序的PID
$! 执行上一个后台命令的PID
#? 执行上一个命令的返回值
4)read命令:从键盘读入数据,赋给变量。如:read USERNAME
5)expr命令:shell变量的算术运算符,对整型变量进行算术运算。
4、变量测试语句:用于测试变量是否相等、是否为空、文件类型。
格式:test 测试条件。
范围:整数、字符串、文件
1)字符串测试:
test str1=str2 测试字符串是否相等
test str1!=str2 测试字符串是否不相等
test str1 测试字符串是否不为空
test -n str1 测试字符串是否不为空
test -z str1 测试字符串是否为空
2)整数测试:
test int1 -eq int2 是否相等
test int1 -ge int2 是否>=
test int1 -gt int2 是否>
test int1 -le int2 是否<=
test int1 -lt int2 是否<
test int1 -ne int2 是否不相等
3)文件测试:
test -d file 指定文件是否是目录
test -f file 指定文件是否常规文件
test -x file 指定文件是否可执行
test -r file 指定文件是否可读
test -w file指定文件是否可写
test -a file 指定文件是否存在
test -s file 文件的大小是否非0
4)变量测试语句可用[]进行简化,如:test -d $1 等价于[ -d $1 ]。注意[和-d之间一定要有空格,]也一样。
5、流程控制语句:
1)if语句:
if 条件1 then
命令1
elif 条件2 then
命令2
else
命令3
fi
2)for……done语句:
for 变量 in 名字表
do
命令列表
done
3)case……esac语句:
case 变量 in
字符串1) 命令列表1 ;;
……
字符串n) 命令列表n ;;
esac
4)while语句:
while 条件
do
done命令