Shell脚本

查看使用shell

Shell脚本

临时环境变量

Shell脚本

永久环境变量

/etc/profile中定义 ,所有用户可用

$HOME/.bash_profile  针对特定用户有效

预定义环境变量

如$PATH、$HOME、$SHELL、$PWD

创建SHELL

Shell脚本

执行shell脚本

sh file.sh   或者让脚本有执行权限(绝对路径或者相对路径)

变量规则

    1.变量名称可以是字母、数字、下划线组成,但是不能以数字开头,环境变量建议大写

    2.变量的类型默认都是字符串类型

    3.变量用=连接值,等号两边不能有空格

    4.变量的值如果有空格,需要使用单引号或者双引号

变量分类

    自定义变量,环境变量,位置参数变量,预定义变量(可以用set查看系统存在的所有变量,释放变量unset,用readonly修饰的变量不能删除)

变量调用

    在变量名前面加上:$

变量赋值

    1.STR="hello"

    2.A=`ls -la` 或者 $(ls -la)  将执行结果赋给变量      数字:a=$((4+5))

    3.A=$STR

    4.a="$aa"456   a=${aa}789

Shell脚本

环境变量(在当前shell和子shell都有效)

    export 变量名=变量值

位置参数变量

    $0 命令本身  $1-9代表第1个到第9个参数

    $* 代表命令行中所有的参数,以"$1  $2  $3 $4"的形式输出

    [email protected]  代表命令行的所有参数,以“$1”“$2”"$3"的形式输出

    $# 代表命令行参数的个数

    $*和[email protected]相同与 不同点:

        都表示传递给函数或者脚本的参数,不被双引号包含时,都以"$1" "$2" ..."$n"的形式输出

        当被双引号包含时,“$*”会将参数作为一个整体,而"[email protected]"会将各个参数分开

        eg:

        Shell脚本

        结果:

        Shell脚本

预定义变量

    $?  执行上一个命令的返回值,返回0代表成功,非0表示失败

    $$ 当前进程的PID,即当前执行脚本生成的进程号

    $! 后台运行的最后一个进程的进程号PID,&

read

    read 【-p提示语句】【-n字符个数】【-t等待时间】【-s隐藏输入】

$()和${}的区别

    $()和``的作用一样,都表示优先执行的命令  eg:echo $(ls a)

    ${}是取变量

    $(( )) 是适用于数值运算    eg:$((1+2))

内置test命令

    1.[ expression ]  注意:首尾都有一个空格     2.test  expression

    测试范围:整数,字符串,文件

        当表达式结果为真时,test返回值是0,否则为非0,$?的结果为0,否则为非0

    字符串测试

            [ str1 == str2 ]  测试是否相等

            [ str1 != str2 ]  测试是否不相等

            [ str1 ]  测试是否不为空

            [ -n str1 ]  测试是否不为空

            [ -z str1 ]  测试是否为空

    整数测试

            [ int1 -eq int2 ]  测试是否相等

            [ int1 -ge int2 ]  测试是否>=

            [ int1 -gt int2 ]  测试是否大于>

            [ int1 -le int2 ]  测试是否<=

            [ int1 -lt int2 ]  测试是否小于<

            [ int1 -ne int2 ]  测试是否不相等

    文件测试

            [ -d file ]    是否为目录

            [ -e file ]    文件是否存在

            [ -f file ]    文件是否常规文件

            [ -L file ]    文件存在并且是一个符号链接

            [ -r file ]    是否可读

            [ -w file ]    是否可写

            [ -x file ]    是否可执行

    多重条件测试

            条件1 -a 条件2  并且的关系              条件1 -o 条件2  或的关系           ! 取反

流程if控制语句

    if [ ]

        then

            //TODO

    elif [ ]

        then

            //TODO

    else

            //TODO

    fi

流程case控制语句

    case $变量 in

        1)

            echo ""

        ;;

        2)

            echo ""

        ;;

        *)

            echo ""

    esac

流程for控制语句

    第一种:

    for N in 1 2 3

        do

            //TODO

        done

    第二种

    for((i=0;i<=5;i++))

        do

            //TODO

        done

    Shell脚本

流程while控制

    第一种

    while [ ]

        do

            //TODO

        done

    Shell脚本

    第二种

    Shell脚本

自定义函数

    说明:1.函数需要先定义,在调用 

        2.ruturn value 来获取函数的返回值

        3.函数在当前shell中执行,可以使用脚本中的变量

    Shell脚本

脚本测试

    sh -x script  执行该脚本并显示所有变量的值

    sh set -x script 对部分脚本测试

    sh -n script 不执行脚本,只是检查语法,返回语法错误

    sh -v script 执行并显示脚本