一、基本变量

       linux脚本中的变量不需要事先声明,而是直接定义使用(这点不同于其他高级编程语言中变量的使用)bash变量类型分为本地变量和环境变量。

   本地变量:只对当前的shell有效,对其他shell及其子shell没效

   环境变量:对当前shell进程及其子shell有效,对其它的shell进程无效。

   位置变量:$1, $2, ..., ${10};$1为第一个输入的变量$0为函数的本身,$#和$@为总共输入变量的数量。

   特殊变量:$?

$$: Shell本身的PIDProcessID      
$!: Shell最后运行的后台Process的PID      
$?: 最后运行的命令的结束代码返回值      
$-: 使用Set命令设定的Flag一览      
$*: 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。      
$@: 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。      
$#: 添加到Shell的参数个数      
$0: Shell本身的文件名      
$1$n: 添加到Shell的各参数值。$1是第1参数、$2是第2参数…

   变量的引用  " ":弱引用,里面的变量会被替换;

               ' ':强引用,里面的所有字符都是字面量,直接输出.

 

 

二、基本语句

①if语句 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

    (1)单分支的if语句:

            if 测试条件; then

                 选择分支

            fi

     表示条件测试状态返回值为0时,则执行选择分支

          

         或者另外一种格式:

            if 测试条件

            then

                 选择分支

            fi

      

     (2)双分支的if语句:

        if 测试条件; then

            选择分支1

        else

            选择分支2

        fi 

      两个分支仅执行其中之一。

       

     (3)多分支的if语句:

        if 条件1; then

            分支1

        elif 条件2; then

            分支2

        elif 条件3; then

            分支3

        ...

        else

            分支n

        fi

、case语句

1

2

3

4

5

6

7

8

9

10

11

12

13

14

    case 语句:有多个测试条件时,case语句会使得语法结构更明晰

   

   格式:

    case 变量引用 in

    PATTERN1)

        分支1

        ;;

    PATTERN2)

        分支2

        ;;

    ...

    *)

        分支n

        ;;

    esac

     

    

     

     

 

、for语句

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

    格式:

        for VAR_NAME in LIST    

        do

            循环体

        done 

         

    或者可以写成:

        for VAR_NAME in LIST ;do

            循环体

        done 

     

    LIST:列表,中间包括一个或多个元素

      

    退出条件:遍历结束

     

    for的第二种使用格式 :

        for ((初始条件;测试条件;修改表达式)); do

            循环体

        done

④、while语句

1

2

3

4

5

    while  测试条件; do

        循环体

    done

      

    如测试结果为“真”,则进入循环;退出条件为,测试条件为假;

⑤、until语句

1

2

3

4

5

    until 测试条件; do

        循环体

    done

      

    如果测试结果为“假”,则进入循环;退出条件为,测试条件为真;

、函数    

 (函数要先定义,然后才能使用) 

1

2

3

4

5

6

7

8

9

    语法:    

        两种格式:

        function F_NAME {

            函数体

        }

          

        F_NAME() {

            函数体

        }

    

⑦、信号捕捉

    trap: 可以在信号出现时捕获信号和执行其他命令   

1

2

3

4

5

6

7

8

9

10

11

    trap CMDs SIGNALs

Linux使用信号与系统上运行的进程进行通信。常用的信号

1 SIGHUP 挂起进程

2 SIGINT 中断进程

3 SIGQUIT 停止进程

9SIGKILL 无条件终止进程

15 SIGTERM 如果可能的话终止进程

17 SIGSTOP 无条件停止但不终止它

18 SIGTSTP 停止或暂停进程但不终止它

19 SIGCONT 重新启动停止的进程

默认情况下bash shell会忽略SIGQUIT3和SIGTERM5信号以防止交互的shell意外终止

捕获信号

 

⑧、数组