shell笔记04(特殊变量)

位置变量:

        $0  获取当前执行的shell脚本的文件名,包括脚本路径

        $n  获取当前执行的shell脚本的第n个参数值, n>9时,用{ }包起来 ${10}

        $#  获取当前shell命令行中参数的总个数

进程状态变量:

        $? 获取执行上一条命令的返回值(0为成功,非零是失败)

            0 表示运行成功

            2 权限拒绝

            1~125 表示运行失败,脚本命令,系统命令错误或参数传递错误

            126 找到该命令,但是无法执行

            127 未找到要运行的命令

            >128 命令被系统强制结束 

        $$ 获取当前shell的进程号

        $! 执行上一个指令的PID

        $_ 在此之前执行的命令或脚本的最后一个参数

        $* 将所有命令行的所有参数视为单个字符串,等同于 "$1$2$3"

        $@ 将命令行每个参数视为单独的字符串,等同于“$1”,"$2","$3",这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白

bash内部变量

        有些内部命令是shell本身自带的,常用的内部命令有:echo    eval    exac    export    readonly    read    shift    wait    exit    和    (.)

        echo 变量名表

                将变量名表制定的变量显示在标准输出

        evalargs  

                读入参数args,并将它们组成一个新的命令,然后执行

        exec 命令参数

            当Shell执行到exec语句时,不会去创建新的子进程,而是转去执行新的命令,当指定的命令执行完时,该进程(也就是当初的Shell)就终止了,所以Shell程序中的exec后面的语句将不再被执行

        export 变量名=value   (就是定义一个本次登陆才起作用的环境变量)

            Shell 可以用export把它的变量向下打入子Shell,从而让子进程继承父进程中的环境变量,但子Shell不能用export把他的变量向上带入父Shell    

        Shift 语句

            Shift 语句按如下方式重新命名所有的位置参数变量,即 $2成为$1,$3成为$2…在程序中每使用一次shift语句,都使得所有的位置一次向左移动一个位置,并使位置参数$#减1,直到减到0为止。

shell笔记04(特殊变量)_第1张图片

字符串操作

shell笔记04(特殊变量)_第2张图片

        ${value:-word}        $value为空,返回word 。$value不为空,返回变量的值

        ${value:=word}       $value没有定义,将word赋值给value

        ${value:?"word"}    $value没有定义,返回word错误,终止程序运行

        ${value:word}         $value没有定义,就会用word替代

你可能感兴趣的:(shell笔记04(特殊变量))