美文网首页
Shell基础-Bash变量

Shell基础-Bash变量

作者: nerowu | 来源:发表于2018-04-12 01:03 被阅读0次

    一、变量分类
    1)用户自定义变量
    2)环境变量
    3)位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
    4)预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

    二、变量设置规则
    1)变量名称可以由字母,数字和下划线组成,但是不能以数字开头。如果变量名是2name则错误的。
    2)在bash中,变量的默认类型都是字符串类型。如果要进行数值运算,则必须指定变量类型为数值型。
    3)变量用等号连接,等号左右两侧不能有空格!!!
    4)变量的值如果有空格,需要使用单引号或双引号括。
    5)在变量的值中,可以使用""转义符。
    6)如果需要增加变量的值,那么可以进行变量的叠加。不过变量需要用双引号包含。如:mypath=${mypath}/mydir或者mypath="$(pwd)"/mydir或者mypath="$(pwd)/mydir"
    7)命令的结果可以作为值赋于变量(mypath=$(pwd);echo $mypath),别环境变量名建议大写,便于区分。
    8)调用变量:$mypath
    删除变量:unset mypath
    变量查看:set(查看所有变量) | grep 变量名

    三、环境变量
    用户自定义变量只在当前shell中生效,而环境变量会在当前shell和子shell中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效。(知识点)
    声明环境变量:export JAVA_HOME
    查询环境变量:env | grep 环境变量。
    unset 变量名。与删除自定义变量名一样。

    四、位置参数变量
    $n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${11}。
    vim mynote.sh
    #!/bin/bash
    echo $0
    echo $1
    echo $2
    chmod 755 mynote.sh
    ./mynote.sh 11 22 33
    类似于 main函数中的main (String[] args)

    $* 代表命令行中所有参数,$*把所有参数看成一个整体。
    $@ 代表命令行中所有参数,不过$@把每个参数区分对待。

    $*与$@的区别
    #!/bin/bash
    for i in "$*"
    #$*中的所有参数看成是一个整体,所以这个for循环中会循环一次
    do
    echo "The parameters is :$i"
    done

    x=1
    for y in "$@"
    #$@中的每个参数都看成是独立的,所以"$@"中有几个参数,就会循环几次
    do
    echo "The parameters is :$y"
    x=$(($x+1))
    done

    $# 代表命令行中所有参数的个数。

    五、预定义变量
    $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
    例如:ls ; echo $?


    image.png

    $$ 当前进程的进程号(PID)
    echo "$$"
    $! 后台运行的最后一个进程的进程号(PID)
    echo "$!"

    相关文章

      网友评论

          本文标题:Shell基础-Bash变量

          本文链接:https://www.haomeiwen.com/subject/zedtkftx.html