一、BASH 概念介绍

        Bash(GNU Bourne-Again Shell )是许多Linux发行版的默认shell。事实上,还有许多传统UNIX上用的Shell,例如tcsh,csh,ash,bsh,ksh等等,Shell Script大致都类同,当您学会一种shell以后,其他shell就会很快上手。

        bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在bash中执行,只有使用了Bourne的特殊变量或内置命令的脚本才需要修改。 bash的命令语法很多来自Korn shell (ksh) 和 C shell (csh), 例如命令行编辑,命令历史,目录栈,$RANDOM 和 $PPID 变量,以及POSIX的命令置换语法: $(...)。作为一个交互式的shell,按下TAB键即可自动补全已部分输入的程序名、文件名、变量名等等。

        shell具有编程能力。叫做脚本语言。

    1、编程语言

        编程语言主要分为:机器语言、汇编语言、高级语言

        

        静态语言:编译型语言

            强类型(变量)

            事先转换成可执行格式

            C  、 C++  、JAVA  、C#

        动态语言:解释型语言,on the fly

             弱类型

            边解释边执行

            PHP  、SHELL  、Python  、perl

    2、编程模型

        编程模型主要分为两种:面向对象 和面向过程

            面向过程:shell   C

            面向对象:JAVA   Python  Perl  C++


二、bash变量

        变量赋值  :

            本地变量:VAR_NAME =VALUE   (作用范围是整个脚本都有效)

            局部变量:local VARNAME=VALUE     (作用域为当前代码段)

            环境变量:export VAENAME=VALUE   (作用域为当前shell进程及其子进程)

        bash变量的类型有:环境变量、本地变量(局部变量)、位置变量、特殊变量。

     1、本地变量

            bash:

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_bash编程

        不同的shell,变量不能继承,父类定义的变量,子类不能继承

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_变量_02

        引用变量:${VARNAME},大部分情况下,大括号可以省略,特殊情况下,大括号不能省略。

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_变量_03

    2、环境变量

        环境变量:export VAENAME=VALUE   (作用域为当前shell进程及其子进程)

            export VARNAME=VALUE

            VARNAME=VALUE

            export VARNAME

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_bash脚本_04

    3、位置变量

        $1,$2 ,$3....


    4、特殊变量

        $? :上一个命令的执行状态返回值。

        程序执行,可能有两类返回值:

                程序执行结果

                程序状态返回代码(0-255)

                    0:正确执行

                    1-255:错误执行, 1,2,127 系统预留

            Linux初级运维(五)——bash脚本编程(变量、变量类型)_bash编程_05

    5、撤销变量

            unset VARNAME

            Linux初级运维(五)——bash脚本编程(变量、变量类型)_bash脚本_06

    6、查看当前shell中环境变量

        set

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_变量_07

    7、查看当前shell中的环境变量

        printenv

        env

        export        

        

    8 、注意事项

        脚本在执行时会启动一个子shell进程;

                命令行中启动的脚本会继承当前shell环境变量

                系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量

           

三、shell脚本

        脚本是命令的堆砌,按实际需求,结合命令流程控制机制实现的源程序。

        shebang:魔数   (#!/bin/bash   环境变量)

        #:为脚本中的注释行,不进行执行

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_bash脚本_08

        给创建的文件添加执行权限

        chmod +x frist.sh

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_bash脚本_09

        执行脚本文件 ./frist.sh

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_bash编程_10

四、练习题

        写一个脚本,完成以下任务:

        (1)、添加5个用户,user1,user2,...user5

        (2)、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息

        (3)、每个用户添加完成后,都要显示用户某某已经成功添加。

        

        Linux初级运维(五)——bash脚本编程(变量、变量类型)_bash脚本_11