美文网首页
shell环境变量与变量赋值

shell环境变量与变量赋值

作者: 迷鹿milu | 来源:发表于2019-08-18 12:00 被阅读0次

    环境变量与变量赋值

    1 环境变量

    编程语言利用变量来存放数据,以备后续使用或者修改
    脚本语言不要求在创建变量前声明它的类型
    shell 定义了一些用于保存用到的配置信息的环境变量

    1.1 变量的格式

    1. 变量名由一系列字母、数字和下划线组成,其中不包含空白字符
    2. 常用的惯例是在脚本中使用大写字母命名环境变量
    3. 使用驼峰命名法或者小写字母命名其它变量

    1.2 查看环境变量

      查看系统的环境变量:

    1. 所有的应用程序和脚本都可以访问环境变量
    2. 可以使用 envprintenv 命令查看当前 shell

      查看进程的环境变量:

    cat /proc/$PID/environ
    

      Tip:

    特殊文件 /proc/$PID/envrion 是一个抱哈环境变量以及对应变量值的列表
    每一个变量以 name=value 的形式来描述,彼此之间由 null 字符 (\0) 分隔,形式易读性较差。想要生成一份易读的报表,可以将 cat 命令的输出通过管道传给 tr, 将其中的 \0 替换成 \n;

    cat /proc/$PID/environ | tr '\0' '\n'
    

    1.3 使用函数添加环境变量

    环境变量通常保存了可用于搜索可执行文件、库文件等的路径列表。

      例:

    PATH=/usr/bin;/bin      //只要shell执行应用程序,它就会首先查找/usr/bin,然后查找 /bin
    LD_LIBRARY_PATH=/usr/lib;/lib
    

    1.4 示例 一:

      通过源码编译一个程序,通常需要为新的可执行文件和库文件添加特定的路径。
      假定安装程序名称为 myapp ,安装位置为 /usr/myapp ,他的二进制文件存放于 /usr/myapp/bin 下,库文件在 /usr/myapp/lib 下

    1.4.1 手动设置

    export PATH=/usr/myapp/bin:$PATH
    export LD_LIBRARY_PATH=/usr/myapp/lib;$LD_LIBRARY_PATH
    

    设置后的结果如下:

    PATH=/usr/myapp/bin:/usr/bin:/bin
    LD_LIBRARY_PATH=/usr/myapp/lib;/usr/lib;/lib
    

    1.4.2 定义函数设置环境变量

    prepend() { [-d "$2" ] && eval $1=\"$2\$\{$1:+':'\$$1\}\" && export $1; }
    
    使用方法:
    prepend /usr/myapp/bin
    prepend /usr/myapp/lib
    

    2 变量赋值

    2.1 赋值使用

    使用两端没有空格的 = 为变量赋值。

    Tip:若等号两边带空格,表示等量关系的比较测试。

    赋值:vatname=valuevarname="value"

    访问变量值:echo $varnamevarname=${var}

    输出结果: value

    2.2 变量引用

    Tip: 在 printf、echo 或其他命令的双引号中引用变量值。

    #!/bin/bash
    fruit=apple
    count=5
    echo "we have $count ${fruit}(s)"       // `shell` 中使用空白字符来分隔单词,所以加上一对花括号来告诉 `shell` 这里的变量名是 `fruit` 而不是 `fruit(s)`
    
    输出:
    we have 5 apple(s)
    

    2.3 变量字符串长度 length

    获取变量值的长度:
    length=${#var}
    例:

    var=0123456789
    echo ${#var}
    

    2.4 识别当前 shell

    echo $SHELL
    echo $0

    2.5 检查是否为超级用户

    if [ $UID -ne 0 ]; then
        echo non root user.
    else
        echo root user.
    fi
    

    也可以写成:

    if test $UID -ne 0:1
     then
        echo non root user.
     else
        echo root user.
    fi
    

    相关文章

      网友评论

          本文标题:shell环境变量与变量赋值

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