linux中默认的shell有一下几种:

            1.bash(发行版默认)

            2.csh

            3.ksh

            4.tcsh


    shell是一种解释性的脚本语言

    脚本语言还有 python(比较流行) perl php等等


    1.变量   

        bash变量的类型:

            1.环境变量:作用域为当前shell进程及其子进程

            2.本地变量(局部变量)

            3.位置变量

            4.特殊变量


    首先介绍一下环境变量:

 

    添加环境变量   export VARNAME=VALUE

        脚本执行时,会启动一个子shell进程,命令行中启动的脚本会继承当前shell环境变量;

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


    本地变量或者称作局部变量

    声明方式: VARNAME=VALUE 作用域为整个bash

                local VARNAME=VALUE 作用域为当前的代码段


    位置变量

        $1:表示引用命令行的参数列表中的第一个参数

        $2:表示引用命令行参数列表中的第二个参数

            ...以此类推

        ...等等

        shift /shift n: shfit表示删除参数列表中的第一个,后面每一个都向前移动, shitf n表示删除前n个,  后面的向前移动

    

    特殊变量

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

                $? 若为0,表示前一条命令正确返回,1-255,表示错误执行(1,2,127系统预留,最好不使用)

        $#:命令行参数列表的个数

        $*:命令行传递的参数列表

        $@:命令行传递的参数列表

    

    变量的引用 ${VARNAME} ,一般花括号可以省略(若不会引起变量名歧义)

    ''单引号表示强引用,引号中的变量不替换

    ""双引号为弱引用,引号中的变量会替换

    所以做变量替换时注意使用双引号


    撤销变量

       unset VARNAME

    查看变量

        set

    查看环境变量

        env

        printenv

        export

    变量名:只能包含字母数字下划线,并且不能以数字开头,不应该跟系统中已有的变量重名,最        好做到见名知意。


    2.bash中如何实现条件判断

    

    条件测试类型:整数测试,字符测试,文件测试

    一、整数测试

    表达式:

        [ expression ]

        ` expression `

        test expression

        注意:中括号和expression必须用空格分开

    

    命令有:

        -eq:相等

        -ne:不相等

        -gt:大于

        -lt:小于

        -ge:大于等于

        -le:小于等于

        

    二、字符测试

    表达式

        [ expression ]

        ` expression `

    

    关键字有

        ==:等于

        !=:不等于

        >/>=:大于/大于等于

        </<=:小于/小于等于

        -n string : 测试字符串是否为空

        -s string :测试字符串是否不为空


    三、文件测试

        -e filename:测试文件是否存在

        -f filename:测试文件是否为普通文件

         -d filename:测试是否为目录

        -r filename:测试当前用户是否有读权限

        -w filename:测试当前用户是否有写权限

        -x  filename:测试当前用户是否有执行权限


    3、bash中进行算术运算和逻辑运算

        一、算术运算

            Ⅰ、let算术运算

                    let C=$A+$B

            Ⅱ、$[]

                    C=$[$A+$B]

            Ⅲ、$(())

                    C=$(($A+$B))

            Ⅳ、expr命令

                    C=`expr $A +$B`

            Ⅴ、bc

                    echo “scale=2;100/28”| bc

                    或者bc<<<"scale=2;100/38"

        二、逻辑运算        &&   ||   !

                在linux中0表示真,非0表示假

                &&:若前一个条件不成立,不判断后一个条件

                ||:若前一个条件成立,不判断后一个条件

    

    4.杂项

        exit n:退出脚本,并给定返回值


        if 判断条件; then

            statement1

            statement2

        fi

        

        if 判断条件;then

            statement1
        elif 判断条件;then

            statement2

        else

            statement3

        fi

        

        for 变量 in 列表;do

            循环体

        done

        

        shebang 魔数

        #!/bin/bash

        #