码迷,mamicode.com
首页 > 系统相关 > 详细

shell学习笔记之二(变量)

时间:2015-04-30 18:23:15      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:shell-变量

    是一种弱类型的变量,声明时不需要指定其变量类型,也不需要遵循“先声明后使用”,任何时候只要想用就可以用。
    局部变量
      在某个shell中生效的变量,在其他shell中无效。可以使用local内建命令来“显示”的声明局部变量
    环境变量
       shell脚本中,默认是全局的
    预设的环境变量:
       BASH:说明bash的全路径
       BASH_VERSION
       CDPATH:用于快速进入目录
       EUID:记录当前用户的UID
       FUNCNAME :在用户函数体内部,记录当前函数体的函数名
       HISTCMD:记录下一条命令在history命令中的编号
       HISTFILE:记录history命令的记录文件的位置
       HISTFILESIZE
       HOSTNAME
       HOSTTYPE:主机架构
       MACHTYPE:主机类型的GNU标示
       LANG:语言环境
       PWD:记录当前目录
       OLDPWD:记录之前目录
       PATH
       PS1:
          命令提示符,默认是[\u@\h \W]\$,其中\u是用户名,\h是主机名,\W是当前工作目录的basename,\$是用户UID的替换字符。
    定义和使用变量
        var=value
        注意:
            1、=两边没有空格 var = value(X)
            2、变量中有空格时必须要用””或’’引起来
        取值:${var}或者$var
        注意:
        1、如果变量值引用的是其他变量,则必须使用双引号。因为单引号会阻止shell解释特殊字符$。
        2、由于shell是弱变量特性,因此即使在脚本中没有定义变量也是可以引用的,从而使得错误很难找到。
        3、shell具有弱变量的特性,不需要声明就可以使用,可以设置变量必须先声明再使用
            shopt -s -o nounset
    取消变量
        unset var
    取消函数
        unset function
    特殊变量
        位置参数
            $1,...,$n  当n>10时,需要写成$(n)
            $0
            $@/$*      脚本所有的参数
            $#     脚本参数总和

        脚本或命令返回值
            $?	上一个命令的返回值,要查看某个命令的返回值必须在运行中个命令后立即查看$?
            linux中规定正常的退出命令和脚本应该以0作为其返回值,任何非0的返回值都表示命令未正确退出或正常执行
            在自动化脚本中,也可以通过$?变量的值判断之前命令的执行状态,从而采取不同的动作
    数组
        shell变量是弱类型的,并不要数组的每一个元素都是相同的类型,shell中的数组对元素个数没有限制,但是只支持一维数组
        shell对于数组变量的声明非常宽松,随时都可以根据需要增加变量中的元素
        定义
            declare -a array
        初始化
            array[0]=0
            array[1]=1
            array[2]="hello"
              或
                declare -a array=(0 1 "hello")
                array[3]=‘waNG‘
              或
                array=(‘john‘ ‘sue‘)
              或
                array=([3]=3 [4]=4 [7]=4)
                    跳号赋值
        数组操作
            取值
                ${arrayname[index]}
                例:
                    1、echo ${array[0]} //取单个元素
                    2、echo ${array[@]} //取所有的元素值,得到的是以空格隔开的元素值
                    3、echo ${array[*]} //取所有的元素值,得到是一整个字符串
                    4、arr1=arr2     //这样相当于arr1=arr2[0]
            长度
                利用@或*可以将数组扩展成列表,然后使用#来获取数组元素的个数
                例:
                    1、echo ${#array[@]}
                    2、echo ${#array[*]}
                        通过本例也就知道了求字符串的长度,${#string}
            截取
                截取某个元素的一部分,对象可以是整个数组或某个元素
                例:
                    1、取出数组的第一,第二个元素
                        echo ${array[@]:1:2}
                    2、取出第二个元素从第0个开始连续5个字符
                        echo ${array[2]:0:5}
            连接
                conn=(${arr1} ${arr2})
            替换数组元素
                array=(${array[@]/old/new})
            取消数组或元素
                unset array[0]
                unset array
    只读变量
        readonly RO=100
        等效于:declare -r RO=100
    变量的作用域
        1、shell变量的作用域是在本shell内,属于本shell的全局变量,也就是从定义该变量的地方开始到shell结束,或者主动使用unset删除了该变量的地方为止。
        2、在函数题内使用local关键字声明了和全局变量同名的局部变量后,对该变量的操作只会影响局部变量,而不会影响与之同名的全局变量。

shell学习笔记之二(变量)

标签:shell-变量

原文地址:http://blog.csdn.net/havedream_one/article/details/45396313

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!