1、shell结构

 * #!指定执行脚本的shell

 * #注释行

 * 命令和控制结构

2、创建shell程序的步骤

 * 创建一个包含命令和控制结构的文件

 * 修改这个文件的权限使它可以执行:chmod u+x

 * 执行 ./shell (sh shell)

3、shell变量

 * 变量是shell传递数据的一种方法,用来代表每个取值的符号名

 * 变量包括:临时变量和永久变量

 * 自定义变量由字母或下划线开头,由字母、数字或下划线组成,区分大小写

 * 使用变量时,需要在变量名前加上前缀 $

 * set:查看所有的变量;unset:删除变量

4、位置变量和特殊变量

 * 位置参数:出现在命令行上的位置确定的参数

 * $0:表示这个脚本的文件名

 * $n:表示这个脚本的第 n 个参数值,n=1-9

 * $*:该脚本的所有参数

 * $#:该脚本的参数个数

 * $$:该脚本的PID

 * $!:执行删一个后台命令的PID

 * $?:执行上一个命令的返回值

5、shell命令

 * read命令:从键盘中读入数据,赋给变量

 * expr命令:对整数型变量进行算术运算

6、变量测试

 * test命令:用于测试变量是否相等、是否为空、文件类型等

 * 格式:test 测试条件

 * 范围:整数、字符串、文件

 * 字符串测试:

linux
shell编程

 * 整数测试:

linux
shell编程

 * 文件测试:

linux
shell编程

 * 简化:用[]进行简化 test 语句 等价于 [ 语句 ]

7、流控制语句

 * 流控制语句:用于控制shell程序的流程

 * exit语句:退出程序执行,返回一个返回值,0表示正常退出,非0表示非正常退出

8、if语句

 * 语法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
   if 条件1 ; then

      命令1

   elif 条件2 ; then

      命令2

   else

      命令3

   fi

 * -a:逻辑与,仅当两个条件都成立时,结果为真

 * -o:逻辑或,两个条件只要一个为真,结果为真

9、for语句

 * 语法:

1
2
3
4
5
6
7
   for 变量 in 名字表

   do

      命令列表

   done

10、case语句

 * 语法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
   case 变量 in

      字符串1) 命令列表1

      ;;

      字符串n) 命令列表n

      ;;

      \*) 命令列表(default)

      ;;

   esac

      ;;

11、while语句:

 * 语法:

1
2
3
4
5
6
7
   while 条件

   do

      命令

   done

12、until语句:

 * 语法:

1
2
3
4
5
6
7
   until 条件

   do

      命令

   done

13、跳出循环

 * break:跳出真个循环

 * continue:跳出本次循环,进行下次循环